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

Ken*_*eth 13 iis asp.net-mvc

我遇到了IIS和ACL的问题.

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

我在根文件夹上完全控制了该用户,并确保继承了权限.

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

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

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

我在这里错过了什么?

Ken*_*eth 27

好,我知道了.

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

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

今天学了点儿新东西.


Jos*_*ell 5

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

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

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

突出显示身份验证的 IIS 功能窗格的屏幕截图

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

编辑匿名身份验证凭据对话框的屏幕截图

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

在 IIS 上构建静态网站 - 步骤 3:配置匿名身份验证

我将重现您可能选择更改匿名身份验证身份的一个重要原因,该文章中提到了这一点:

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