Asp.net

如何解決“System.Web.HttpException (0x80004005):文件不存在”?

  • May 3, 2021

抱歉,如果這個網站上已經回答了這個問題,我搜尋但沒有找到這個確切的場景。

我正在將 log4net 添加到 WCF 服務。我在 Application_Error 事件中添加了一個處理程序,它在每個請求上都擷取了一個未找到文件的錯誤。

我在網站上看到過這種情況,通常該錯誤可以追溯到根目錄中沒有“favicon”文件,或者在 css 樣式表中引用了失去的圖像。

但是,這是一個 WCF 服務,沒有 CSS 樣式表,在根目錄下添加一個 favicon 並沒有解決問題。

還有其他人有解決此問題的好方法嗎?

一些線索:

  • 我還沒有將它部署到真正的 IIS 伺服器上,我在本地執行它。
  • 當我在 Visual Studio 中的 DEBUG 中執行時不會發生錯誤,只有當我從 Web 瀏覽器(IE 或 Chrome)訪問服務時
  • 我在錯誤消息中添加了 url 和文件路徑,它們是這樣的:

網址: http://localhost:3994/

文件路徑: /

錯誤: System.Web.HttpException (0x80004005):文件不存在。

編輯:以上值顯示在記錄的異常中:

protected void Application_Error(object sender, EventArgs e)
{
   var objErr = Server.GetLastError().GetBaseException();
   if (objErr is System.Web.HttpException)
   {
       var filePath = Context.Request.FilePath;
       var url = ((HttpApplication) sender).Context.Request.Url;
       Log.Error("URL: " + url + "; FilePath: " + filePath, objErr);
   } else
       Log.Error("Application Error", objErr);
}

任何幫助將不勝感激。

原因很可能是未指定服務。當 Web 伺服器(本地開發者也是如此)收到對文件夾的請求時,他們會在該文件夾中查找預設頁面(通常稱為:index.htm、index.html、default.asp、default.aspx 等)和呈現(除非您使用的是基於 REST 的服務描述)。當您從 VS 執行時,調試將直接帶您進入實際服務。

在這種情況下,因為您已經建構了一個服務,所以您需要指定確切服務的位置,即http://localhost:3994/service.svc.

另外:如果您啟動調試會話,然後將 URL 更改為http://localhost:3994/您應該能夠檢查調試器的情況。

引用自:https://stackoverflow.com/questions/4819170