我目前正在开发一个ASP.NET 3.5 / IIS7应用程序,我正在使用WinHost作为临时托管环境。我正在阅读一些我认为是权限问题的剧集,并且票务流程刚刚达到“你在自己的舞台上”。
这是我正在尝试做的事情:
var dir = Server.MapPath("~/MyFolder/NewPath");
Directory.CreateDirectory(dir);
这是我得到的回应:
访问路径 'E:\ web \ MyAccount \ MyFolder \ NewPath'是 拒绝。
描述:未处理的异常 在执行期间发生 当前的网络请求。请查看 堆栈跟踪以获取更多信息 错误及其来源 代码。
异常详细信息: System.UnauthorizedAccessException的: 访问路径 'E:\ web \ MyAccount \ MyFolder \ NewPath'是 拒绝。
堆栈跟踪显示CreateDirectory行失败。该应用程序在本地运行良好,并且运行应用程序池的标识具有对“MyFolder”路径的写入权限。在这两种环境中,信任级别都设置为“完全”。
WinHost的指导是:
默认情况下,asp.net用户已满 对您网站的权限。
进一步研究,WindowsIndentity.GetCurrent()。Name返回“W02 \ aspnet_17884”,它似乎是一个帐户特定的身份。我的感觉是这个帐户没有权限写入应用程序的文件系统,但当我提示WinHost时,我收到了:
您遇到的问题是 与您的申请相关 配置。
和
我建议做的是 注册然后发布你的 DiscountASP.NET中的问题 社区论坛
这显然是为什么现在问题出现在Stack Overflow:)
有人建议任何应用级配置更改吗?这更可能是托管网站上的权限问题吗?感谢。
答案 0 :(得分:4)
答案是......网站部署打破了它。实际上,答案严格来说,权限根本不存在(如预期的那样),但原因似乎是Web部署以某种方式删除了写权限。我可以从具有发布ACL能力的Web部署的角度看到这一点,但是为什么WinHost允许它操纵包含该网站的目录的权限超出我的范围。
关于我的问题(以及WinHost的回复)的更多信息,在他们的论坛下No write access to file system开始。
答案 1 :(得分:0)
是的,“W02 \ aspnet_17884”应该有足够的权限来创建文件夹。我建议您在ASPSPIDER上创建一个免费帐户,并在其中上传一个非常简单的示例,其配置与您的类似。如果它在那里工作而不在WinHost上工作,你可以向他们展示它是如何在aspspider上工作而不是在他们的服务器上工作。然后强迫他们解决或获得新主持人。