带有ACL和静态内容的IIS 8 401.3

时间:2013-05-04 22:24:54

标签: asp.net-mvc iis

我遇到了IIS和ACL的问题。

我在专用的AppPool下配置了一个MVC应用程序。 apppool在ApplicationPoolIdentity(在我的情况下是用户IIS AppPool \ accountinfo.local =与我的网站同名)下运行。

我在root文件夹上完全控制了这个用户,并确保继承了权限。

当我访问主页时,它运行正常,我可以访问它。但是,当我尝试访问我的静态内容时,它位于子文件夹(Content / Site.css)中,我收到错误401.3。

我确保权限是继承的,如果我转到有效权限,我可以看到该用户确实拥有完全控制权。

我启用了失败的请求跟踪和安全审核,但我没有得到任何日志文件,也没有事件查看器中的任何事件。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:26)

好的,我明白了。

显然,对静态内容的请求不会通过applicationIdentity,而是通过标准的IUSR帐户。

一旦我授予该用户对该文件夹的读取权限,它就开始工作了。

今天学到了新的东西。

答案 1 :(得分:3)

在IIS中使用匿名身份验证时,静态内容由“匿名用户身份”访问(并提供)。默认情况下,将其设置为特定的内置用户帐户“ IUSR”-因此,为什么授予该用户权限可以解决该问题(如Kenneth's excellent answer中所述)。

如果出于某种原因而不愿意使用IUSR帐户,则可以通过执行以下操作来更改IIS中网站的“匿名用户身份”:

  1. 转到IIS中的站点,然后在功能窗格中双击“身份验证”

screenshot of IIS feature pane with authentication highlighted

  1. 右键单击“匿名身​​份验证”,然后选择“应用程序池标识”以使用您的应用程序池标识(或者您可以通过单击“设置”按钮来设置与IUSR不同的特定用户)

screenshot of edit anonymous authentication credentials dialog

此过程也记录在此Microsoft Docs文章中:

Build a Static Website on IIS - Step 3: Configure Anonymous Authentication

我将重述一个重要的原因,您可能会选择更改匿名身份验证身份,该身份已在该文章中提到:

  

如果您使用IUSR帐户,则向匿名用户授予与该帐户相关的所有内部网络访问权限。