2016-08-28 5 views
0

例外を処理してログに記録する方法はApplication_Errorです。私はGlobal.asaxから例外を他のコントローラに渡す方法

this.Session["w"] = (Exception)exception; 

を試みたが、それは働いていないコントローラ

をErrorにGlobal.asaxのから例外を渡す必要があります。

私のコードは次のようになります。

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

    if (exception != null) 
    { 
     this.Session["w"] = (Exception)exception; 
     Server.ClearError(); 
     ExceptionManager.LogExceptionToTextFile(exception); 
     ExceptionManager.LogExceptionToEmail(exception); 
     if (!Response.IsRequestBeingRedirected) 
      Response.Redirect("~/Error/Index"); 
    } 
} 
+0

こんにちは@Tom、どの部分は機能していませんか? 'GetLastError()'はあなたが期待しているものを返さない、セッション変数が固執していない、コードがまったく動いていないのか?または、他の何か? – killthrush

+0

GetLastError()は例外を返しますが、Global.asaxからエラーコントローラ – Tom

答えて

0

あなたはこの

Exception exception = Server.GetLastError(); 
string errorId = Guid.NewGuid().ToString(); 
    if (exception != null) 
    { 
     this.Application.Lock(); 
     this.Application[errorId] = exception; 
     this.Application.Unlock(); 
     Server.ClearError(); 
     ExceptionManager.LogExceptionToTextFile(exception); 
     ExceptionManager.LogExceptionToEmail(exception); 
     if (!Response.IsRequestBeingRedirected) 
      Response.Redirect("~/Error/Index?errorId="+errorId); 
    } 

ような何かをしようとすると、エラーコントローラ

var Exception = (Exception)Application[Request["errorId"]] 

EDITにすることができますあなたの場合

セシを使いたいアドオンは、また、あなたはあなたのセッションを失う

Response.Redirect("~/Error/Index", false); 

理由で

Response.Redirect("~/Error/Index"); 

を交換したいかもしれませんが、キャンセルをスレッドに起因しています。 When Should I Use Response.Redirect(url, true)?で詳細を読むことができます。

+0

にお越しいただきありがとうございます。動作していません。 – Tom

+0

@Tom、エラーコントローラコードを投稿してください。 – Robert

+0

@Tom、私は私の答えを編集し、別の解決策を提示しました。 – Robert

関連する問題