好像您正在尋找某種基本級別的應用程序錯誤處理。爲什麼不在Global.asax文件中添加Application_Error方法的定義。這將捕獲任何未經處理的異常,在您的應用程序突然出現(從控制器或其他庫或意見等)
這裏的例子:添加到您的Global.asax:
protected void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
Response.Clear();
//Do your logging here.
//Redirect to an appropriate error page.
}
如果您想知道要記錄的內容,您可以在此方法內使用異常對象中的大量信息。我通常會寫一個將某些信息寫入文本文件的類。下面是一個例子(在一個名爲Log類) - 這不是最全面的方法,我相信更多的信息可以從異常對象中提取,但:
public class Log
{
private StreamWriter _writer;
public void WriteErrorMessage(string errorMessage, string pageUrl, Exception e)
{
_writer = new StreamWriter("LOG_FILE_OUTPUT_PATH_HERE.txt", true);
StringBuilder fullError = new StringBuilder();
fullError.AppendLine("Error log: " + DateTime.Now);
fullError.AppendLine(errorMessage);
fullError.AppendLine("Error raised on: " + pageUrl);
fullError.AppendLine("Associated exception message: " + e.Message + "\n" + e.InnerException);
fullError.AppendLine("Exception class: " + e.GetType().ToString());
fullError.AppendLine("Exception source: " + e.Source.ToString());
fullError.AppendLine("Exception method: " + e.TargetSite.Name.ToString());
fullError.AppendLine();
_writer.WriteLine(fullError);
_writer.Flush();
_writer.Close();
}
}
然後,在你的Application_Error方法(即我們定義以上)只需致電:
new Log().WriteErrorMessage("Global error has occurred.", Request.Url.ToString(), exception);