虚拟目录与 UNC 路径的权限问题

虚拟目录与 UNC 路径的权限问题

我的站点(测试环境)中有一个虚拟目录。它是一个 UNC 共享,也用作公共 FTP。

它配置为以域管理员帐户进行连接,“测试设置”显示一切似乎正常。但是当我尝试连接它时,我得到了:

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

这是一个 ASP.NET YSOD。我不确定 ASP.NET 为什么要参与其中,因为我请求的是静态 .jpg 文件。

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

  • 模块名称 WindowsAuthentication
  • 通知 2
  • HttpStatus 500
  • HttpReason 内部服务器错误
  • HttpSubStatus 0
  • 错误代码 0
  • 配置异常信息
  • 通知 AUTHENTICATE_REQUEST
  • ErrorCode 操作成功完成。(0x0)

如果我将“物理路径登录类型”从 ClearText 更改为 Network,则会收到以下 IIS 错误:

HTTP 错误 500.19 - 内部服务器

错误无法访问所请求的页面,因为该页面的相关配置数据无效。

详细错误信息

  • 模块IIS Web 核心
  • 通知开始请求
  • 处理程序尚未确定
  • 错误代码 0x80070005
  • 配置错误由于权限不足,无法读取配置文件
  • 配置文件 \\?\UNC\INTRANET\FTP\test\web.config
  • 请求的 URL http://test.mydowmain.com:80/uploads/images/ca49acf6-6174-412e-8abd-59fab983e931.jpg

  • 物理路径 \\INTRANET\FTP\test\images\ca49acf6-6174-412e-8abd-59fab983e931.jpg

  • 登录方法尚未确定

  • 登录用户尚未确定
  • 失败请求跟踪日志目录 C:\inetpub\logs\FailedReqLogFiles

奇怪的是,这不会生成失败请求日志——我已将失败请求跟踪设置为跟踪错误代码为 400-999 的错误。

还值得注意的是,如果我从 IIS 内部打开配置功能,我会看到访问被拒绝错误。

我在本地开发机器上进行了完全相同的设置,使用相同的 UNC 路径和相同的用户,它可以正常工作。但在测试服务器上却不行。

我究竟做错了什么?

答案1

事实上,它是一个 ASP.net 应用程序,这可能正是问题所在。您的应用程序池身份必须具有权限(不一定是 IIS 身份;默认情况下,应用程序池身份是本地网络服务帐户。)您可能还需要在 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

答案2

我通过在 Web 服务器和 unc 服务器上创建匹配的帐户解决了我们的问题。然后我修改了应用程序池以使用该匹配的帐户而不是网络服务运行。这使我能够灵活地在两台服务器上同步密码,而​​不会影响其他依赖网络服务的功能。

答案3

我在 IIS 7.5 上遇到了同样的问题,我发现解决方案是:

  1. 在服务器上创建具有共享的本地用户
  2. 创建网络共享,为步骤 1 中创建的用户提供所需的权限。Windows 将为您指定的用户设置权限
  3. 进入IIS上的虚拟目录,打开“高级设置”
  4. 在网络共享的物理路径中输入 URL\\<servername>\<sharename>
  5. 单击“物理路径凭据”;添加步骤 1 中创建的用户的凭据

答案4

您可以检查以确保运行 IIS 的帐户对有问题的 UNC 具有适当/所需的权限。

相关内容