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

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

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

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

Sitecore应用程序本身工作得很好,静态文件完全可访问的,直到我用更新的文件replace它们。

根据我可以find关于这个主题的每一个资源,一个401.3错误表明所请求资源的ACL不允许访问IIS用户帐户。

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

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

  • 根据在这个线程中提供的build议,我试图完全删除static目录,并手工重新创build它的子目录,以便它们从父Website目录inheritance权限。 但是,问题依然存在。

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

我在Windows Server 2008上遇到了类似的问题:

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

为了testing我用了两页:

  • hello.html
  • hello.aspx

hello.aspx挺好的。 hello.html扔了401.3未经授权。 当我尝试浏览到页面时,Microsoft sysinternals procmon在应用程序池用户的 hello.html报告了“ACCESS DENIED”。

要解决此问题,我将用户IUSR添加到网站文件夹的访问控制列表。 IUSR未在Windowspipe理工具用户列表中列出,但是如果在文件夹属性安全性选项卡中添加用户时search它,则会显示IUSR。

我发现procmon报告用户试图访问hello.html应用程序池用户 ,而不是iusr,这让我感到非常奇怪(而且令人困惑)。

我发现是什么导致了这个问题:

事实certificate,为每个文件设置了“encryption内容以保护数据”属性。

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

我今天遇到过类似的问题,对于我来说,解决这个问题的第二点就是给予IUSR账户读取和修改文件和目录的权限(这不仅仅是我正在处理的静态文件)

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