授权:应用程序池标识不能访问path

我有两个非常相似的ASP Classic应用程序,它们都使用Windows身份validation,并在相同的开发PC(Windows 7 / IIS 7.5)上运行。

他们已经有好几年了,随着多年来PC升级,我一直“走过”。 一个工作正常,但另一个没有 – 我不能确定它是否曾经在这个特定的个人电脑上工作,因为它已经有一段时间,因为我不得不去工作,但我认为它已经在最近的工作。

我的问题是,当我浏览网站,我得到以下错误:

HTTP Error 500.19 - Internal Server Error The requested page cannot be accessed because the related configuration data for the page is invalid Cannot read configuration file due to insufficient permissions 

好奇的是,它声称没有足够的权限访问web.config – 但没有web.config!

在应用程序设置中,如果我们testing连接,则会报错:

 Authorization: Application pool identity cannot access path 

据我所知,这两个应用程序configuration相同:

  • 两者都使用相同的应用程序池
  • 池(域用户)的身份与应用程序文件夹具有相同的权限(读取+修改)
  • 两者都configuration为Windows身份validation

我很难过 有任何想法吗?

编辑 :完整的错误信息:

 **Detailed Error Information** Module IIS Web Core Notification BeginRequest Handler Not yet determined Error Code 0x80070005 Config Error Cannot read configuration file due to insufficient permissions Config File \\?\D:\Projects\Scope2\web.config Requested URL http://myserver:80/scope2/ Physical Path D:\Projects\Scope2\ Logon Method Not yet determined Logon User Not yet determined 

最佳的揣测:

应用程序池似乎很难读取目录或其子文件夹中的一个web.config文件。 NTFS权限可能阻止它这样做。

应用程序池以“应用程序池属性”中configuration的“应用程序池标识”启动。 此帐户需要能够枚举网站中的所有文件夹,以读取住在那里的web.config文件。

IIS 7.x将其configuration存储在web.config文件中 – 如果有任何子文件夹禁止访问App Pool帐户,则会遇到困难。

我认为该消息的第二部分表明,当前的应用程序池身份不具有对其命名的文件夹的读访问权限。

如果你授予 – 例如 – 每个人:读取它指的文件夹,如果错误回来,它可能会命名一个不同的文件夹。

您可以允许IIS_IUSRS读取您的所有网站文件夹,但这是一个相当广泛的解决scheme; 您真正需要做的是允许您的应用程序池帐户读取访问整个网站的内容(和子文件夹)。 (除非你是一个非常特殊的情况(假设你不是),否则只能读取(不能修改或写入))

或者,您可以在站点级别设置allowSubdirConfig属性,以防止在web.config文件中search较低级别的子文件夹: http : //msdn.microsoft.com/zh-cn/library/ms689463.aspx