2013-07-17 39 views
2

我正在SQL Server 2008上的ASP.NET應用程序中工作。有時用戶會因爲各種原因在網站上生成錯誤,如果可以的話,這將非常有用獲取產生錯誤的原始請求,以便我可以重放它或使其成爲測試的一部分。如何獲得導致ASP .NET錯誤的請求數據

我熟悉事件查看器來查找錯誤,但我發現總結並沒有給我足夠的信息,如「他們試圖使用什麼特殊字符」?

這可能嗎?我如何知道?

回答

5

據我所知,沒有默認的方法來做到這一點。您將不得不向應用程序添加額外的日誌記錄,以便您可以捕獲此信息並將其存儲在數據庫中或通過電子郵件發送給管理員。

嘗試修改Application_Error事件在Global.asax中

這裏是如何收集一些信息那裏,你可以修改此進一步適合您的需求

void Application_Error(object sender, EventArgs e) 
{ 
    // Code that runs when an unhandled error occurs 
    // At this point we have information about the error 
    HttpContext ctx = HttpContext.Current; 

    Exception exception = ctx.Server.GetLastError(); 

    //Error message that will be emailed 
    string errorInfo = 
     "<br><b>Time:</b> " + DateTime.Now.ToString() + 
     "<br><b>Offending URL:</b> " + ctx.Request.Url.ToString() + 
     "<br><b>Referring URL:</b> " + ctx.Request.UrlReferrer.ToString() + 
     "<br><br><b>Query String:</b> " + ctx.Request.QueryString.ToString() + 
     "<br><br><b>IP Address:</b> " + ctx.Request.UserHostAddress + 
     "<br><br><b>Form:</b> " + ctx.Request.Form.ToString() + 
     "<br><br><b>Source:</b> " + exception.Source + 
     "<br><br><b>Message:</b> " + exception.Message + 
     "<br><br><b>Stack trace:</b> " + exception.StackTrace; 
} 
+0

謝謝!我將不得不嘗試一下。你知道是否有性能影響? – Peter

+0

您好@Herbert我試圖發送一個電子郵件中的錯誤,如'<%@ Application Language =「C#」%><%@ Import Namespace =「System.Web.Helpers」%> .. WebMail.Send(「help @ gmale.com「,主題:」應用程序錯誤「,body:errorInfo,來自:」[email protected]「,isBodyHtml:true);'但它不起作用。我曾嘗試在VStudio中調試它並運行,但我沒有收到電子郵件 – Peter

+0

Peter,您的新問題是分開的,應該在新問題中提出。但是,我注意到在一行中使用「[email protected]」,然後在另一行中使用「[email protected]」確保您使用的是正確的域。 –

7

您可以使用ELMAH錯誤日誌。它是免費的,並且能夠很好地處理錯誤,並顯示很多有用的信息。您可以將其配置爲在發生錯誤時發送電子郵件。

網址: https://code.google.com/p/elmah/

+0

感謝您的回覆文森特。我曾經看過Elmah,但我有問題設置它 - http://stackoverflow.com/questions/13156791/elmah-on-iis-6-not-logging-errors – Peter

相關問題