我正在尝试在ASP.NET MVC 3网站中映射虚拟目录。虚拟目录仅包含图像文件,物理目录位于另一台服务器上。当我尝试通过Web浏览器访问此目录中的图像时,出现HTTP 500错误:
Parser Error Message: An error occurred loading a configuration file: Failed to start monitoring changes to '<virtual directory path>' because access is denied.
[编辑]:重新启动IIS后,我看到它在错误消息的末尾添加了“访问被拒绝”。但是,该目录具有读取访问权限的“Everyone”权限,但仍然无效。我已经看过详细说明同样错误的帖子,但是权限设置解决方案对我不起作用。
为什么要查找配置文件?我已经更新了我的Global.asax以忽略有问题的路由,并且从IIS 6中,我可以毫无问题地浏览位于虚拟目录中的文件。我已经验证虚拟目录未设置为应用程序。此外,该目录的权限具有Everyone集的读取权限。我做错了什么?
[编辑#2]:指向的虚拟目录是一个网络共享文件夹......这有什么不同吗?
[编辑#3]:我正在尝试做的IIS 6层次结构是:默认网站 - &gt; OurSite(MVC网站是ITSELF的虚拟目录) - &gt;图像(我正在努力的虚拟目录)。这是一个嵌套的虚拟目录肯定存在问题;如果我创建目录作为默认网站的直接子项而不是默认网站 - &gt;我们的网站,它运作良好。
谢谢,
安迪
答案 0 :(得分:1)
确保运行App Pool的身份对该虚拟文件夹具有执行权限和列表权限,因为它正在尝试监视该虚拟文件夹的缓存更改。
http://support.microsoft.com/kb/316721/
[编辑]此链接表示它可能是第二种情况,它没有权限共享目录中的子文件夹。
http://support.microsoft.com/kb/317955
ASPNET帐户是否可以一直访问该树?
答案 1 :(得分:0)
阅读Turnkey的回答和您的意见,我只想指出,如果您的AppPool使用NETWORK SERVICE
身份,那么您的远程服务器需要添加网络服务器的计算机/计算机帐户共享文件夹和NTFS权限不 NETWORK SERVICE
帐户
如果您将NETWORK SERVICE
添加到共享文件夹和NTFS权限,则只需添加本地计算机的NETWORK SERVICE
帐户而不是 Web服务器 s NETWORK SERVICE
帐号。我希望我有意义
每当您使用计算机的NETWORK SERVICE
帐户远程连接时,您都可以使用计算机的计算机帐户生效,这就是您需要添加的内容。
假设您的网络服务器名为 PRODSERVER ,您需要将计算机/计算机帐户 PRODSERVER $ 添加到远程共享文件夹的权限。
希望有所帮助。