Iis-7

IIS 報告靜態文件的 401.3 錯誤,但似乎具有正確的 ACL

  • January 5, 2022

我正在一個在 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,這很奇怪(並且令人困惑)。

引用自:https://serverfault.com/questions/236360