IIS 7.0中HTML页面的未经授权访问错误

9
我正在使用VSTS 2008 + C# + .Net 3.5 + IIS 7.0。我创建了一个新的网站,并将一个HTML文件放入目录中。当我在IIS管理器中使用浏览功能浏览HTML文件时,遇到以下错误,请问有什么问题吗?
顺便说一下:我对未经授权的错误感到非常困惑,因为我是在管理员帐户下运行工作进程的。从错误消息中,我不明白为什么登录方法是匿名的而不是使用管理员帐户?
HTTP Error 401.3 - Unauthorized
You do not have permission to view this directory or page because of the access control list (ACL) configuration or encryption settings for this resource on the Web server.

Module IIS Web Core 
Notification AuthenticateRequest 
Handler StaticFile 
Error Cde 0x80070005 
Requested URL http://localhost:80/a.html 
Physical Path C:\test\simplehosttest\a.html 
Logon Method Anonymous 
Logon User Anonymous 

1
你启用了目录浏览吗? - mglmnc
当您安装IIS时,是否启用了静态内容/静态文件处理程序? - iwo
谢谢mglmnc,"您是否启用了目录浏览" -- 如何检查?我以前从未这样做过。 - George2
谢谢iwo,如何检查是否在安装IIS时启用了“启用静态内容/静态文件处理程序”? - George2
5个回答

17

C:\test\simplehosttest\a.html

请为IUSR账户在该文件或该文件夹上授予必要的权限。这样,401.3错误就会消失。


我已经将工作进程的帐户设置为管理员,为什么还有权限问题?管理员应该比IUSR更强大吧? - George2
我尝试添加了IUSR,它起作用了,太棒了!为什么使用IUSR可以解决我的问题?这个特殊用户是用来做什么的? - George2
3
IUSR 是默认的匿名用户账户。这意味着当您的网站允许匿名访问时,实际上 IIS 会使用 IUSR 账户作为所有用户的登录账户。因此,您必须授予 IUSR 对文件夹的必要权限,以便它可以访问它们。 - Lex Li
2
http://learn.iis.net/page.aspx/140/understanding-the-built-in-user-and-group-accounts-in-iis-70/ - Lex Li

15
在 IIS 8.5 (全新安装)中,我将应用程序池运行为自定义身份,并将文件存储在 /inetpub/wwwroot 外的文件夹中。该身份具有所有适当的文件权限,但仍然出现了 acl 错误。
经过一些努力,我发现在 IIS 管理器 -> My Site -> 身份验证 -> 匿名身份验证 -> 编辑中,默认情况下使用特定用户(IUSR)设置的匿名身份验证的身份。将其设置为使用应用程序池身份验证对我有用!

1
这对我来说立即解决了问题,有人能否评论一下为什么默认为IUSR而不是“应用程序池标识”? - Chris Marisic

1

基本上,您需要授予在 IIS 中运行您的应用程序池的标识对文件的读取访问权限。在 2008 服务器和 Vista 上,该标识(除非您已明确更改)将是“NT Authority\Network Service”,而在 Windows7 上则为“IisAppPool\AppPoolIdentity”(不要问他们为什么在 win7 上这样做,如果您问我,这是一个 WTF)


我有点困惑,有一个用户名叫做“AppPoolIdentity”? - George2
我已经尝试将HTML页面权限添加给用户“IUSR”,并且它有效。为什么使用IUSR可以解决我的问题?这个特殊用户用于什么? - George2
1
我已将IIS_IUSR添加到文件权限中,而不是'IUSR'。微软,你的问题真让人厌烦。 - Dermot

1
我发现这个问题的另一个原因是我要部署的网站是以zip文件的形式发送给我的。由于某种原因(可能是因为这些文件是在Mac上构建的),这些文件传输时被设置了加密保护位。这些文件在Windows资源管理器中显示为绿色。

0
我曾经遇到过同样的问题,但是建议的修复方法都没有解决我的问题。我试图在Windows Server 2008上的IIS7上部署一个带有表单身份验证的ASP.Net 4.0 Web应用程序。解决问题的方法是为处理程序提供读取和脚本权限,可以通过打开处理程序映射,然后从右侧菜单中选择“编辑功能权限”来完成。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接