Windows-Server-2003
IIS6:如何解決 ASP.NET 應用程序中的 404 錯誤?
我在 Windows Server 2003/IIS6 上有一個 ASP.NET 應用程序,由於某種原因拒絕執行(它是施樂中心,如果該資訊有幫助的話)。儘管在此伺服器上,它之前一直在完美執行。
現在,如果我嘗試打開應用程序首頁 (
http://some.intranet.server/XeroxCentreWareWeb/
),我得到的只是“404 - 找不到文件或目錄”錯誤。
- 該應用程序配置為在其自己的應用程序池中執行,該應用程序池作為網路服務執行。
- 網路服務帳戶對配置的目錄具有讀取權限。
- 如果我停止應用程序池,我會收到預期的“服務不可用”消息,這意味著應用程序及其池已正確連接
- 我試圖用 procmon 追踪任何文件權限問題 - 什麼都看不到。頁面載入時甚至無法訪問 Web 應用程序目錄。
- 有趣的是,根據 procmon,Web 伺服器首先訪問 401-2 自定義錯誤文件(由於伺服器配置而登錄失敗),但隨後決定將 404 發送到客戶端。
- **編輯:**該應用程序使用 Windows 集成身份驗證執行。普通使用者也可以訪問應用程序目錄(如果有的話,我會注意到 procmon 中的文件系統“ACCESS DENIED”消息。)
這讓我覺得甚至在訪問應用程序文件之前就發生了某種奇怪的權限問題。我只是不知道在哪裡看。
我嘗試將應用程序池作為本地系統執行以進行測試,但無濟於事。
在這種情況下我還能檢查什麼?
我找到的答案很簡單,不明顯。
仍然有一個“萬用字元應用程序映射”定義到不再存在的應用程序伺服器(在本例中為 ColdFusion)。ColdFusion 解除安裝程序顯然“忘記”了從 MetaBase 中刪除該設置。
萬用字元應用程序映射在此處定義:
- 在 IIS 管理器中,打開應用程序屬性對話框
- 在“虛擬目錄”選項卡上,查看“應用程序設置”部分
- 點擊“配置…”
- “應用程序配置”對話框打開
- 在那裡,在“映射”選項卡上
首先,我喜歡您採取的故障排除步驟。另一個“中斷”測試是停止站點本身,而不僅僅是應用程序池,以確保它不是另一個處理它的站點,而是共享應用程序池。
IIS6 在 IIS 管理器中有“Web 服務擴展”部分。確保您使用的框架版本是允許的。如果您最近將框架版本更改為未標記為允許的版本,則會引發 404 錯誤。
IIS 日誌還將為您確認子狀態程式碼,它還將確認正確的站點已連接。