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 應用程序本身執行良好,靜態文件完全可以訪問,直到我用更新的文件替換它們。
根據我能找到的關於該主題的所有資源,401.3 錯誤表明所請求資源的 ACL 不允許訪問 IIS 使用者帳戶。
- 我查看了目前正在工作的文件(例如
C:\Inetpub\wwwroot\(website name)\Website\default.css
)的 ACL,它似乎與不可訪問的靜態文件相同。- 我檢查了 Sitecore 站點的應用程序池設置,匿名使用者是“IUSR”。按照此執行緒中的說明,我授予 IUSR 帳戶對該目錄的讀取和執行權限,
C:\Inetpub\wwwroot\(website name)\Website\static
並遞歸地將其應用於該目錄中的所有子文件夾和文件。沒有骰子。- 根據此執行緒中提供的建議,我嘗試
static
完全刪除該目錄並手動重新創建它及其子目錄,以便它們從父Website
目錄繼承權限。但是,問題仍然存在。我還能嘗試解決這些 401.3 錯誤嗎?
我發現了導致問題的原因:
事實證明,為每個文件設置了“加密內容以保護數據”屬性。
我訪問了每個文件的屬性並取消選中該複選框(右鍵點擊-> 屬性-> 高級…(屬性旁邊)-> 取消選中加密內容以保護數據),一切都恢復正常。
我在 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,這很奇怪(並且令人困惑)。