我的站点(测试环境)中有一个虚拟目录。它是一个 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 中创建的用户提供所需的权限。Windows 将为您指定的用户设置权限
- 进入IIS上的虚拟目录,打开“高级设置”
- 在网络共享的物理路径中输入 URL
\\<servername>\<sharename>
- 单击“物理路径凭据”;添加步骤 1 中创建的用户的凭据
答案4
您可以检查以确保运行 IIS 的帐户对有问题的 UNC 具有适当/所需的权限。