Asp.net mvc 内容文件的ASP.NET MVC嵌套虚拟目录

Asp.net mvc 内容文件的ASP.NET MVC嵌套虚拟目录,asp.net-mvc,iis,virtual-directory,Asp.net Mvc,Iis,Virtual Directory,我正在尝试在我的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 acc

我正在尝试在我的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”权限,具有读取权限,并且仍然不工作。我看到过一些帖子详细描述了这个错误,但是权限设置解决方案对我不起作用

为什么要查找配置文件?我已经更新了my Global.asax以忽略有问题的路由,并且在IIS 6中,我可以毫无问题地浏览位于虚拟目录中的文件。我已验证虚拟目录未设置为应用程序。此外,该目录上的权限对设置的所有人都具有读取权限。我做错了什么

[编辑#2]:指向的虚拟目录是网络共享文件夹。。。这有什么区别吗

[编辑#3]:我尝试执行的IIS 6层次结构是:默认网站->我们的网站(MVC网站本身就是一个虚拟目录)->图像(我正在努力使用的虚拟目录)。这是一个嵌套的虚拟目录,这肯定是一个问题;如果我将目录创建为默认网站的直接子目录,而不是默认网站->我们的网站,那么它可以正常工作

谢谢


Andy

确保运行应用程序池的标识在尝试监视该虚拟文件夹的缓存更改时,对该虚拟文件夹也具有执行和列出权限

[编辑]此链接表示可能是第二种情况,即它没有权限访问共享目录中的子文件夹


ASPNET帐户是否可以访问该树的所有路径?

确保运行应用程序池的标识在尝试监视该虚拟文件夹的缓存更改时,也具有该虚拟文件夹的“执行”和“列出”权限

[编辑]此链接表示可能是第二种情况,即它没有权限访问共享目录中的子文件夹


ASPNET帐户是否可以访问该树的所有路径?

阅读Turnkey的答案和您的评论,我只想指出,如果您的应用程序池正在使用
网络服务
标识,那么您的远程服务器需要将web服务器的计算机/计算机帐户添加到共享文件夹中,而NTFS权限不是
网络服务
帐户。
如果将
网络服务
添加到共享文件夹和NTFS权限,则只需添加本地计算机的
网络服务
帐户,而不是web服务器的
网络服务
帐户。我希望我说的有道理。
每当您使用计算机的
网络服务
帐户进行远程连接时,您实际上是在使用计算机的机器帐户,因此这就是您需要添加的。
假设您的web服务器名为PRODSERVER,则需要将机器/计算机帐户PRODSERVER$添加到远程共享文件夹的权限中。

希望能有所帮助。

阅读Turnkey的答案和您的评论,我只想指出,如果您的应用程序池正在使用
网络服务
标识,那么您的远程服务器需要将web服务器的计算机/计算机帐户添加到共享文件夹中,而NTFS权限不是
网络服务
帐户。
如果将
网络服务
添加到共享文件夹和NTFS权限,则只需添加本地计算机的
网络服务
帐户,而不是web服务器的
网络服务
帐户。我希望我说的有道理。
每当您使用计算机的
网络服务
帐户进行远程连接时,您实际上是在使用计算机的机器帐户,因此这就是您需要添加的。
假设您的web服务器名为PRODSERVER,则需要将机器/计算机帐户PRODSERVER$添加到远程共享文件夹的权限中。

希望能有所帮助。

谢谢您的回复。不幸的是,这对我不起作用。该站点运行的应用程序池正在使用标识:“网络服务”,我已经为该特定用户添加了网站级别和虚拟目录级别的权限。你发送的链接说,如果“Everyone”用户有访问权限,那么你就不需要添加应用程序池用户,但是现在,两个用户都有访问权限,并且它仍然不工作。看到另一篇KB文章,这篇文章暗示它可能在该共享驱动器的目录路径中更深。您可以在子文件夹中看到正在访问该共享的标识。我已确保共享文件夹的整个层次结构具有授予网络服务、IUSR_machinename和ASPNET的权限,好吧,我创建的虚拟目录作为网站的子目录存在,而网站本身就是“默认网站”下的虚拟目录。如果我直接在“默认网站”下创建虚拟目录,那么它可以正常工作。为什么不能创建嵌套的虚拟目录?这是一个很好的问题,尤其是VD包含在它自己的web文件夹中。我想知道它是否正确解析了路径。上面错误消息中“虚拟目录路径”的内容被隐藏,它是否在实际错误消息中显示了正确的扩展路径?感谢您的回复。不幸的是,这对我不起作用。该站点运行的应用程序池正在使用标识:“网络服务”,我已经为该spe添加了权限