web-dev-qa-db-ja.com

Global.asax-Application_Error-ページデータを取得するにはどうすればよいですか?

私はこのコードを持っています:

using System.Configuration;

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

    string ErrorMessage = ex.Message;
    string StackTrace = ex.StackTrace;
    string ExceptionType = ex.GetType().FullName;
    string UserId = Getloggedinuser();
    string WebErrorSendEmail =
       ConfigurationManager.AppSettings["WebErrorSendEmail"];

    // save the exception in DB
    LogStuffInDbAndSendEmailFromDb();
}

これは(ほとんどの)私のコードです。ただし、ごく一部のケースでは、十分な情報が得られません。例外がどのページから発生したのかわかりません。

例外が発生したページに関連するあらゆる種類の情報を取得するにはどうすればよいですか?

以下は最短メッセージの例です。

Base-64文字配列の長さが無効です。

system.Convert.FromBase64String(String s)at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)at System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState)at System.Web System.Web.UI.HiddenFieldPageStatePersister.Load()の.UI.Util.DeserializeWithAssert(IStateFormatter formatter、String serializedState)

19
Ash

次のように、現在のリクエストのURLとページを取得できます。

void Application_Error(object sender, EventArgs e)
{
    // Code that runs when an unhandled error occurs
    if (HttpContext.Current != null)
    {
        var url = HttpContext.Current.Request.Url;
        var page = HttpContext.Current.Handler as System.Web.UI.Page;
    }
}
24
Netricity