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

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

我正在 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 用户帐户。

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

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

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

我还可以尝试什么方法来解决这些 401.3 错误?

答案1

我在 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应用程序池用户,而不是 iusr。

答案2

我发现了问题的原因:

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

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

答案3

我今天遇到了类似的问题,为我解决这个问题的是您的第二点,关于给予 IUSR 帐户对文件和目录的读取和修改权限(我处理的不仅仅是静态文件)

答案4

检查应用程序池标识是否具有网站和网络服务的权限。

相关内容