错误500.19 - 基于UNC的IIS 7.5站点 - 文件权限问题

时间:2011-05-23 07:07:15

标签: asp.net iis-7.5

我正在尝试在我的IIS 7.5(Win 7 Pro机器)中获取一个网站,以通过UNC路径运行默认网站和底层应用程序之一的代码。这是我第一次尝试在基于UNC路径的IIS 7.5中设置站点/应用程序:同一域中另一台服务器上的文件夹。

我尝试了各种各样的方法来解决这个问题。应用程序池在我的Win 7 Pro PC上的ApplicationPoolIdentity下运行,我已经设置了此站点。

尝试通过http://localhost/TheAppName在浏览器中运行应用时遇到的运行时错误是:

  

模块: IIS Web Core
  通知:未知
  处理程序:尚未确定   错误代码: 0x800700005
  配置错误:由于权限不足,无法读取配置文件   配置文件: \\?\UNC\theServerName\www\TheAppName
  请求的网址: http://localhost:80/TheAppName
  物理路径:(此处没有任何内容)
  登录方法:尚未确定
  登录用户:尚未确定

我为上述服务器和应用程序名称添加了假名,以获取此帖子的隐私权。

因此,在阅读此站点的UNC路径中找到的web.config时遇到问题。

我尝试在目标服务器上添加本地用户,然后将该用户的权限授予web.config,然后在我的计算机上将该用户RemoteServerName\LocalUserICreated用作应用程序池的标识,但它没有任何效果。

不知道该怎么做以及如何去做。

4 个答案:

答案 0 :(得分:2)

我假设UNC路径是指另一台服务器?

如果是这两个服务器在同一个域中?如果是这样,则IIS需要在具有读取文件权限的用户帐户下运行网站。

如果不是,您需要在Web服务器和文件存储服务器上创建相同的用户帐户(相同的用户名,相同的密码),然后更改IIS以在此用户帐户下运行该网站。

希望这有助于/有效。

答案 1 :(得分:1)

从UNC路径创建Web应用程序或虚拟目录时,需要为IIS提供连接的凭据。

在“添加应用程序”对话框中,“物理路径”部分下方是“连接为...”按钮 - 然后您可以选择“应用程序用户(传递身份验证)”或“特定用户”。

您选择的是,它们必须是远程服务器可识别的凭据 - “传递”将尝试使用当前桌面(或浏览器)凭据来验证用户(如果您正在连接)根据你的意见通过VPN)几乎肯定是无效的。在这种情况下,您应该使用“特定用户”并提供(理想情况下)具有适当权限的域用户来运行该站点。

当我们过去需要这样做的时候,我们会在本地AppPools运行的域上创建一个帐户,然后这也可以在这些情况下使用。

如果您已经创建了应用程序,则可以使用“基本设置...”操作链接访问该对话框。

答案 2 :(得分:1)

我花了几个小时才终于为自己解决了同样的问题。原来我在物理路径上使用了错误的斜线。它应该是\,而不是//这些。

答案 3 :(得分:0)

ZhaphAlan都确定了Microsoft建议的解决方法。以下是Microsoft's page on your problem的其余信息:

  

原因

     

IIS 6.0使用宿主工作进程标识连接到远程目录。然后,IIS 6.0根据远程目录对用户进行身份验证。但是,IIS 7.0引入了委派方案。在IIS 7.0中,可以将网站设置和应用程序级设置委派给Web.config文件。

     

对于直通身份验证,Web.config文件存储在UNC目录中。因此,IIS 7.0中的默认进程标识必须首先检查Web.config文件,以确定在身份验证过程开始之前是否必须应用任何与安全相关的设置。 IIS 7.0中的默认进程标识没有足够的权限来打开Web.config文件。因此,Web请求被拒绝。

     

如果UNC目录中没有Web.config文件,则IIS 7.0将使用为父目录定义的规则。为了在这种情况下提供Web内容,工作进程标识必须有权访问整个内容目录。否则,Web请求将被拒绝。

     

分辨率

     

要解决此问题并确保传递身份验证正常工作,请按照下列步骤操作:

     
      
  1. 确保访问UNC目录的所有用户帐户至少具有UNC目录的“读取”权限。

         

    请注意,此行为与IIS 6.0中的行为相同。

  2.   
  3. 确保IIS工作进程标识在域帐户下或UNC文件服务器上也存在的工作组帐户下运行。如果有必要,请在UNC文件服务器上创建一个与IIS工作进程身份相同的用户名和密码的帐户。

         

    注释

         
        
    • 此行为不同于IIS 6.0中的行为。
    •   
    • 默认情况下,DefaultAppPool应用程序池在网络服务帐户下运行。该帐户是计算机本地的,该帐户在另一台计算机上不存在。因此,请确保将DefaultAppPool应用程序池配置为使用作为域用户的帐户。然后,您可以在UNC文件服务器上使用相同的帐户。或者,您可以在UNC文件服务器上以及在运行IIS 7.0的计算机上创建工作组帐户。
    •   
  4.   
  5. 如果UNC目录中有一个Web.config文件,请编辑该Web.config文件的自由访问控制列表(DACL),以使DACL包含您在步骤2中验证的帐户。编辑Web.config文件的DACL,以使DACL包含您在步骤2中创建的帐户。

         

    如果UNC目录中没有Web.config文件,请编辑UNC目录的DACL,以便DACL包含您在步骤2中验证的帐户。或者,编辑UNC目录的DACL,以便DACL包含您在步骤2中创建的帐户。

         

    请注意,此行为不同于IIS 6.0中的行为。

  6.