Directory.CreateDirectory在共享主机上引发UnauthorizedAccessException的可能原因

Tro*_*unt 5 asp.net security hosting

我目前正在使用ASP.NET 3.5 / IIS7应用程序,正在使用WinHost作为临时托管环境。我遇到了一些我认为是权限问题的戏剧,票务流程刚刚达到“您自己”的阶段。

这是我想做的事情:

var dir = Server.MapPath("~/MyFolder/NewPath");
Directory.CreateDirectory(dir);
Run Code Online (Sandbox Code Playgroud)

这是我得到的回应:

拒绝访问路径“ E:\ web \ MyAccount \ MyFolder \ NewPath”。

说明:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。

异常详细信息:System.UnauthorizedAccessException:拒绝访问路径“ E:\ web \ MyAccount \ MyFolder \ NewPath”。

堆栈跟踪显示CreateDirectory行失败。该应用程序在本地运行良好,并且该应用程序池在其下运行的标识具有对“ MyFolder”路径的写访问权。在这两种环境中,信任级别都设置为“完全”。

WinHost的指导是:

默认情况下,asp.net用户对您的站点具有完全权限。

进一步查看,WindowsIndentity.GetCurrent()。Name返回“ W02 \ aspnet_17884”,它似乎是帐户特定的标识。我的感觉是该帐户无权写入应用程序的文件系统,但是当我在此提示WinHost时,我收到了:

您遇到的问题与您的应用程序配置有关。

我建议您做的是注册然后在DiscountASP.NET社区论坛中发布您的问题

这显然是为什么问题现在出现在Stack Overflow上的原因:)

谁能建议任何应用程序级别的配置更改?这是否更有可能是托管站点上的权限问题?谢谢。

更新:我也在WinHost论坛上提出了问题

Tro*_*unt 4

答案是……网络部署破坏了它。实际上,严格来说,答案是权限根本不存在(如预期),但原因似乎是 Web 部署以某种方式删除了写入权限。我可以从具有发布 ACL 能力的 Web 部署的角度看到这一点,但为什么 WinHost 允许它操纵包含网站的目录的权限超出了我的范围。

有关我的问题(以及 WinHost 的回复)的更多信息,请访问他们的论坛,主题为No write access to file system