我创建了一个 ASP.net MVC 开发的 Web 应用程序,并且正在尝试设置 IIS。
错误:Http 错误 500.19,错误代码 0x80070005,由于权限不足,无法读取配置文件,配置文件:C:\inetpub\wwwroot\BudgetManagerMain\BudgetManager\web.config
如果我将 AppPool 设置为使用“管理员”,则不会出现任何问题,并且可以正常访问网站。如果我设置为 NETWORK SERVICE(或其他任何设置,包括自行创建的管理员或非管理员用户帐户),则会出现上述错误。
我尝试过的事情:
- 名为“测试”的应用程序池的标识是“NetworkService”
- 设置 wwwroot 及其所有子文件/文件夹的完全访问权限
- 已验证有效权限并且网络服务具有完全访问权限。
- 我的网站上的身份验证设置为匿名并在应用程序池标识下运行
- 我没有在网站上设置任何物理路径凭证
- 确认网站设置为在名为“测试”的应用程序池下运行
使用进程监视器,以下是我在 ACCESS DENIED 事件中发现的内容的摘要
事件标签:
- 类别:文件系统
- 操作:创建文件
- 结果:访问被拒绝
- 路径:..\web.config
- 所需访问权限:通用读取
- 处置方式:开放
- 选项:同步 IO 非警报、非目录文件
- 属性:N
- 分享模式:阅读
- 分配大小:n/a
流程标签
...很多内容似乎不相关
用户: NT AUTHORITY\NETWORK SERVICE
答案1
错误的最简单解释:IIS 检测到一个名为
C:\inetpub\wwwroot\BudgetManagerMain\BudgetManager
并尝试阅读网页配置文件来自该位置,但应用程序池帐户无法读取该文件夹中的 web.config 文件。
这可能是因为 NTFS 权限阻止网络服务帐户(您上面提到的)访问该文件夹。
应用程序池帐户需要对网站内的所有文件夹和 web.config 文件的读取权限。
答案2
您可以尝试删除 Temporary ASP.NET Files 文件夹中的相关文件夹(C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files
在 XP 中)。也许正在进行某种缓存?