WindowsAzure:是否可以在web.config中设置目录权限?

我的一个PHP脚本想写入一个日志文件夹,结果错误是:

无法打开日志文件“E:\ approot \ framework \ log / dev.log”进行写入。

当我设置WebRole用户RD001的写入权限…手动它工作正常。 现在我想自动设置文件夹权限。 有没有简单的方法来完成它? 请注意,我是非常新的IIS和周围的东西,我将不胜感激精确的答案,thx。

简短/技术回复

您可以使用完全信任和启动taks设置特定文件夹的权限。 但是,您需要考虑无状态操作系统,并在此脚本中更改驱动器号(可能,不太可能),这会使其变得困难。 另外,本地存储不会被保留,所以在重新启动的情况下,您无法确保这些数据保持不变。

建议 :不要写本地,请阅读下面的内容…

编辑:想到这一点,虽然我仍然建议反对这一点,有第三个选项:您可以分配本地存储在服务配置,然后从PHP使用DLL参考访问它,那么你将有权访问该文件夹。 请记住本地存储没有被保存,所以在重新启动的时候没有了。

本地服务配置: http : //blogs.mscommunity.net/blogs/dadamec/archive/2008/12/11/azure-reading-and-writing-with-localstorage.aspx

从php访问配置: http : //phpazure.codeplex.com/discussions/64334? ProjectName= phpazure


长/详细回复:

在Azure中,我们鼓励您将其作为一个平台,而不是“服务器上的软件”。 我的意思是,诸如“将某些东西写入本地日志文件”这样的想法与云“想法”有些不相容。 根据您的使用情况,您可以(也应该)将此脚本转换为将这些数据输出到基于云的或外部存储,而不是将其放在磁盘上。

我建议修改这个脚本来利用PHP Azure SDK,并将这些日志记录写入Azure中的表或blob存储中。 如果这听起来不错,请提供PHP,我可以举一个确切的例子。

主要原因是(除了推云的想法之外),在Azure中,你不能假定主机(“角色实例”)将维持一个操作系统状态,所以虽然你可以设置一些东西,如文件夹权限,不要靠他们坚持这样的方式。 您没有真正的方法来保证当架构必须更新您的角色并对较低级别的问题做出反应时,这些权限不会被重置。 例如,当前实例所在机架上的硬盘驱动器笼可能会失败。 如果故障足够糟糕,Fabric控制器将需要重建您的实例。 当发生这种情况时,你的代码被移动到一个完全不同的服务器上,所以需要重新设置这些权限。 另外,根据变化,E:\可能突然之间需要是F:\或X:\驱动器,你不知道。

假设(在某种程度上)您的应用程序正在“Azure中”运行,而不是“在Azure上的服务器上”运行,因此您不必假定主机环境。 因此,除了代码(数据,日志,审计等)之外,您需要的任何内容都应该存储在您可以控制的地方(Azure存储,外部呼叫等)