虚拟目录到UNCpath的权限问题

我在我的网站(testing环境)有一个虚拟目录。 这是一个UNC共享,也被用作公共FTP。

它被configuration为连接作为域pipe理员帐户和“testing设置”说,一切似乎工作。 但是,当我尝试连接到它,我得到:

500 – “无法开始监视\ INTRANET \ FTP \ test \ web.config上的更改,因为访问被拒绝”

这是一个ASP.NET YSOD。 我不确定为什么ASP.NET会涉及到,因为它是我请求的静态.jpg文件。

我试图打开失败的请求跟踪,这是具体的错误:

  • ModuleName WindowsAuthentication
  • 通知2
  • HttpStatus 500
  • HttpReason内部服务器错误
  • HttpSubStatus 0
  • ErrorCode 0
  • ConfigExceptionInfo
  • 通知AUTHENTICATE_REQUEST
  • ErrorCode操作已成功完成。 (为0x0)

如果我将“物理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是:

  1. 使用共享在服务器上创build一个本地用户
  2. 创buildnetworking共享,为步骤1中创build的用户提供所需的权限。 Windows将为您指定的用户设置权限
  3. 转到IIS上的虚拟目录并打开“高级设置”
  4. inputnetworking共享的物理path中的URL,作为\\<servername>\<sharename>
  5. 点击物理path证书; 添加步骤1中创build的用户的凭据

与使用域帐户访问某些域资源的非域Web服务器相同的问题。 我们得到了奇怪的行为(即使我们知道凭据是正确的,“testing凭证”也会失败,我们可以在内容视图中看到文件夹和文件,但无法“浏览”它们)。 解决scheme是在机器上创build一个与域用户同名的本地用户。

我想这是如果Web服务器是域的成员会发生什么事情,本地用户有必要得到一些本地资源(configuration?),以映射虚拟。

希望能帮助别人。