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


13

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

它被配置为以域管理员帐户身份连接,并且“测试设置”显示一切正常。但是,当我尝试连接到它时,我得到:

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

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

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

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

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

HTTP错误500.19-内部服务器

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

详细错误信息

  • IIS Web核心模块
  • 通知 BeginRequest
  • 处理程序尚未确定
  • 错误代码 0x80070005
  • 配置错误由于权限不足而无法读取配置文件
  • 配置文件 \\?\UNC\INTRANET\FTP\test\web.config
  • 要求的网址 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路径和相同的用户进行了完全相同的设置。只是在测试服务器上没有。

我究竟做错了什么?

Answers:


10

它是一个ASP.net应用程序这一事实可能正是这里的问题所在。您的应用程序池标识必须具有权限(不一定是IIS标识;默认情况下,应用程序池标识是本地网络服务帐户。)您可能还需要在IIS计算机上运行caspol.exe。

http://msdn.microsoft.com/zh-CN/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

7

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


3
在花了5个小时并寻找解决方案之后,IT Action的解决方案终于为我工作了。因此,我已经在两台计算机上创建了完全相同的用户,然后将应用程序池设置为使用该帐户运行。我正要为此疯狂。终于解决了。希望这对所有人都有同样的问题有所帮助

大量+1。我和@ user249232在同一条船上-在IIS计算机上建立一个镜像帐户,经过大量搜索后立即解决了该问题。但是,我是通过网站基本设置中的“连接为”设置用户的,而不是通过更改应用程序池ID来设置的。
S 2002年

1
此解决方案适用于谁,但对我来说这是一个糟糕的解决方案,因为我不想尝试在自己的个人vbox linux安装程序中模仿我的corp域用户名设置,因此我使用了不同的用户名约定。密码同步是一种额外的复杂性,对我来说,这是最重要的,因为我已经使用了分割服务器(主机上的iis和Linux上的php56可以访问作曲家)
Brian Thomas

花了2天之后。这对我有用。即使我尝试了相同的凭据,也无法正常工作。最后,在管理员组移动是普通用户后,工作
科坦科塔克

2

如果此共享源不是应用程序(即映像文件夹),请尝试配置要被包含虚拟目录的根应用程序忽略的虚拟目录(在本例中,通过将根应用程序池类型更改为经典模式,而不是集成模式)。但是,如果共享点中有一个应用程序,则可以按照@mfinni所述的方式进行。


1

您可能要检查以确保运行IIS的帐户对麻烦的UNC具有正确/必要的权限。


3
如果这不是ASP.net应用程序,那么您将大赚一笔。由于它在应用程序池中运行,因此需要访问的是应用程序池标识,而不是IIS用户帐户。
mfinni 2011年

1

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

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

0

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

我在想,如果Web服务器是域的成员,并且本地用户必须获取一些本地资源(配置?)以映射虚拟服务器,就会发生这种情况。

希望能对某人有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.