IIS 报告静态文件的 401.3 错误,但似乎具有正确的 ACL

7 iis-7 windows-server-2008-r2

我正在一个在 Windows Server 2008 R2 实例上运行 Sitecore 6.3.1 的网站上工作。

一切都运行良好,直到我将一些静态文件(CSS、JS、图像)从我们的前端开发人员提供的 ZIP 档案中复制到C:\Inetpub\wwwroot\(website name)\Website\static.

现在,每当我尝试访问任何这些静态文件(例如http://localhost/static/css/main.css)时,都会收到 401.3 错误(根据C:\inetpub\logs\LogFiles\W3SVC2\u_ex110216.log)。

该Sitecore的应用程序本身的工作蛮好的,静态文件完全访问,直到我与更新的文件替换它们。

根据我能找到的关于该主题的每个资源,401.3 错误表明所请求资源的 ACL 不允许访问 IIS 用户帐户。

  • 我查看了当前正在工作的文件(例如C:\Inetpub\wwwroot\(website name)\Website\default.css)的 ACL ,它似乎与无法访问的静态文件的 ACL相同。

  • 我检查了 Sitecore 站点的应用程序池设置,匿名用户是“IUSR”。按照此线程中的说明,我授予 IUSR 帐户对该C:\Inetpub\wwwroot\(website name)\Website\static目录的读取和执行权限,并将其递归应用于该目录中的所有子文件夹和文件。没有骰子。

  • 根据此线程中提供的建议,我尝试static完全删除该目录并手动重新创建它及其子目录,以便它们从父Website目录继承权限。然而,问题仍然存在。

我还能尝试什么来解决这些 401.3 错误?

小智 12

我在 Windows Server 2008 上的网站也有类似的问题:

  • 启用表单和匿名身份验证
  • 授予应用程序池用户对该文件夹的完全访问权限
  • 授予 iis_iusrs 组对该文件夹的完全访问权限

为了测试,我使用了两页:

  • hello.html
  • hello.aspx

hello.aspx来得很好。 hello.html扔了一个未经授权的401.3。当我尝试浏览到该页面时,Microsoft sysinternals procmon 报告应用程序池用户打开hello.html了“访问被拒绝” 。

为了解决这个问题,我将用户 IUSR 添加到网站文件夹的访问控制列表中。IUSR 未列在 Windows 管理工具用户列表中,但如果您在文件夹属性安全选项卡中添加用户时搜索它,它就会出现。

我发现 procmon 报告尝试访问的用户hello.html应用程序池 user而不是 iusr非常奇怪(并且令人困惑)。


小智 6

我发现了导致问题的原因:

事实证明,为每个文件都设置了“加密内容以保护数据”属性。

我访问了每个文件的属性并取消选中该复选框(右键单击 -> 属性 -> 高级...(在属性旁边)-> 取消选中加密内容以保护数据),一切都恢复正常。