我正在 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
检查应用程序池标识是否具有网站和网络服务的权限。