私の ASP.NET アプリケーションでは、以下を表示したい一般的なエラー ページを作成しています。
- 例外スタック トレース (管理者向け)。
- エラー メッセージ (すべて)。
- イベント ID。
アプローチは次のとおりです。
- 以下に示すようにカスタム クラスを定義し、Session を使用してオブジェクトを Global.asax に保存しました。
エラーページでそのオブジェクトを取得し、エラーを表示しました。
public class CustomErrorInfo { public string EventId { get; set; } public string ExceptionTrace { get; set; } public string ErrorMessage { get; set; } public string ContextInfo { get; set; } public override string ToString() { return (EventId + "\n" + ExceptionTrace + "\n" + ErrorMessage + "\n" + ContextInfo + "\n"); } }
Global.asax ファイル:
void Application_Error(object sender, EventArgs e)
{
var customErrorMessage = new CustomErrorInfo();
customErrorMessage.EventId = Guid.NewGuid().ToString();
Exception exception = Server.GetLastError();
customErrorMessage.ExceptionTrace = exception.ToString().Replace("\n","");
customErrorMessage.ContextInfo = DateTime.Today.ToLongDateString();
customErrorMessage.ErrorMessage = "An unhandled error.";
Response.Redirect("WebForm1.aspx?MsgId=" + customErrorMessage.EventId + "&Msg=" + customErrorMessage.ErrorMessage +
"&MsgTrace=" + customErrorMessage.ExceptionTrace + "&MsgContext=" + customErrorMessage.ContextInfo);
// Code that runs when an unhandled error occurs
}
しかし、私のものは Azure アプリケーションであるため、この場合のように、例外情報のようなヒービング オブジェクトを保持するために Session を使用することはお勧めできません。
したがって、エラー ページに最適な方法でカスタム オブジェクトを渡すことができるアプローチを探しています。
私は使用する際にいくつかの助けを探しています:
- JSON (クエリ文字列を使用)
- Javascript または
- セッションコンテキストを使用せずにカスタムオブジェクトをエラーページに渡すことができる他の方法。