2014-02-19 60 views
0

這個問題比其他任何事情都更好奇。這個場景是,我提出了一些代碼,讓我知道我的ASP.Net Intranet門戶中是否有任何錯誤。這絕對沒有問題,比起其他任何事情都更重要,以防萬一。System.Web - 文件不存在

長話短說,我加入這個代碼Global.asax.cs

protected void Application_Error(object sender, EventArgs e) { 
    try { 
     Exception ex = Server.GetLastError(); 

     if (ex != null) { 
      MailMessage message = new MailMessage("[email protected]", "[email protected]"); 
      message.Subject = @"Error"; 
      message.Body = string.Format(@"<html><body>Unhandled error on: {0} <br/> {1} <br/> {2}",ex.Source.ToString(),ex.Message,ex.ToString()); 
      message.IsBodyHtml = true; 

      SmtpClient client = new SmtpClient("server.company.com.au"); 
      client.Send(message); 
      message.Dispose(); 
      client.Dispose(); 
     } 
    } catch (Exception) { } 
} 

,我不斷在我的電子郵件的所有時間收到此錯誤信息:

未處理的錯誤上:System.Web程序文件不存在。 System.Web.HttpException(0x80004005):文件不存在。在 System.Web.StaticFileHandler.GetFileInfo(字符串 virtualPathWithPathInfo,字符串physicalPath,HttpResponse對象響應) 在System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext的 上下文,字符串overrideVirtualPath)在 System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext的上下文中, 的AsyncCallback回調,對象狀態)在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在System.Web.HttpApplication.ExecuteStep(IExecutionStep步驟, 布爾& completedSynchronously)

我很難過。我不知道這個錯誤來自哪裏,我仍在努力尋找它。它沒有以任何方式影響網站的任何方面。我相信這個錯誤會在之前出現,因爲我所做的只是添加上面的代碼。我正在使用.Net Farmework 4.

任何人都知道這是什麼?

+0

@MikeSmithDev - 捕捉具有記錄到文件功能,我爲了便於閱讀,此處省略。順便說一句,日誌文件仍然是空的。 – user2930100

+0

可能的副本在dev服務器上說明它的問題,我的是在生產服務器上。 dev服務器沒有問題,dev機器也沒有問題。 – user2930100

+1

...這與服務器無關。這是同樣的錯誤,並可能以相同的方式解決。你缺少一個文件,你只需要隔離調用它的頁面。 – MikeSmithDev

回答

1

對於你所有的錯誤錄音,我強烈推薦ELMAH。易於實施,並且可以在發生某些錯誤時向您發送電子郵件。

還可以節省您創建本土解決方案的時間。

+0

感謝您的鏈接。我從來沒有聽說過它。因爲這個項目或多或少不重要,所以我會記住這一點,並且爲了測試目的我有錯誤日誌記錄(因爲這個項目是微不足道的)。 – user2930100

-1

請檢查您的遺失文件或您的母版頁引用的圖像。 要捕獲的錯誤,下面的錯誤處理程序添加到您的Global.asax

protected void Application_Error(object sender, EventArgs e) 
{ 
    Exception ex = Server.GetLastError(); 

    if (ex.Message == "File does not exist.") 
    { 
     throw new Exception(string.Format("{0} {1}", ex.Message, HttpContext.Current.Request.Url.ToString()), ex); 
    } 
} 

一段時間這個問題上與丟失的文件相關的favicon.ico

+1

...爲什麼在* actual *異常時拋出* new *異常...? – MikeSmithDev

+0

發送電子郵件之前,您還可以調試此代碼,以便它會告訴您缺少的資源 –

+0

在我的計算機中運行時,它在調試器中永遠不會被擊中。它只有在部署時纔會出錯。 – user2930100