我在我的网站(testing环境)有一个虚拟目录。 这是一个UNC共享,也被用作公共FTP。
它被configuration为连接作为域pipe理员帐户和“testing设置”说,一切似乎工作。 但是,当我尝试连接到它,我得到:
500 – “无法开始监视\ INTRANET \ FTP \ test \ web.config上的更改,因为访问被拒绝”
这是一个ASP.NET YSOD。 我不确定为什么ASP.NET会涉及到,因为它是我请求的静态.jpg文件。
我试图打开失败的请求跟踪,这是具体的错误:
如果我将“物理pathlogintypes”从“ClearText”更改为“Network”。 我得到以下IIS错误:
HTTP错误500.19 – 内部服务器
错误请求的页面无法访问,因为页面的相关configuration数据无效。
详细的错误信息模块IIS Web核心通知BeginRequest
处理程序尚未确定
错误代码0x80070005configuration错误由于权限不足,无法读取configuration文件
configuration文件\\ UNC \ INTRANET \ FTP \ test \ web.config请求的URL http://test.mydowmain.com:80/uploads/images/ca49acf6-6174-412e-8abd-59fab983e931.jpg物理path\ INTRANET \ FTP \ test \ images \ ca49acf6-6174-412e-8abd-59fab983e931.jpg
login方法尚未确定
login用户尚未确定
失败请求跟踪日志目录C:\ inetpub \ logs \ FailedReqLogFiles
这不会生成一个失败的请求日志足够奇怪 – 我已经设置失败的请求跟踪跟踪错误,错误代码为400-999。
另外值得注意的是,如果我从IIS内部打开configurationfunction,我看到一个访问被拒绝的错误。
我在我的本地开发机器上完全相同的UNCpath和相同的用户工作。 只是在testing服务器上没有。
我究竟做错了什么?
这是一个ASP.net应用程序的事实可能正是这里的问题。 您的应用程序池标识必须具有权限(不一定是IIS身份;默认情况下,应用程序池标识是本地networking服务帐户)。您也可能需要在IIS计算机上运行caspol.exe。
http://msdn.microsoft.com/en-us/library/cb6t8dtz%28v=vs.80%29.aspx
http://learn.iis.net/page.aspx/50/aspnet-20-35-shared-hosting-configuration/
%windir%\Microsoft.NET\Framework\v2.0.50727\caspol -m -ag 1. -url "file://\\remotefileserver\content$\*" FullTrust
我通过在Web服务器和unc服务器上创build匹配的帐户来解决我们的问题。 然后,我修改了应用程序池以使用该匹配的帐户而不是networking服务运行。 这使我可以灵活地在两台服务器上同步密码,而不会影响其他networking服务相关function。
如果这个共享源不是一个应用程序(例如一个图像文件夹),尝试configuration虚拟目录,使其被包含虚拟目录的根应用程序忽略(在我的情况下,我已经通过将根应用程序池types更改为经典而不是集成模式)。 但是如果在共享点有一个应用程序,那么你可以按照@mfinni所述的方式。
您可能会检查以确保IIS正在运行的帐户具有适当的/所需的权限的麻烦的UNC。
我在IIS 7.5上遇到同样的问题,我发现解决scheme是:
\\<servername>\<sharename> 与使用域帐户访问某些域资源的非域Web服务器相同的问题。 我们得到了奇怪的行为(即使我们知道凭据是正确的,“testing凭证”也会失败,我们可以在内容视图中看到文件夹和文件,但无法“浏览”它们)。 解决scheme是在机器上创build一个与域用户同名的本地用户。
我想这是如果Web服务器是域的成员会发生什么事情,本地用户有必要得到一些本地资源(configuration?),以映射虚拟。
希望能帮助别人。