在我的 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 或
- 在不使用会话上下文的情况下,我可以将自定义对象传递到错误页面的任何其他方式。