gpt4 book ai didi

javascript - 在没有 session 的情况下将异常消息传递到错误页面 ASP.NET 的最佳实践

转载 作者:行者123 更新时间:2023-11-29 22:24:44 26 4
gpt4 key购买 nike

在我的 ASP.NET 应用程序中,我正在编写一个常见错误页面,我想在其中显示以下内容:

  1. 异常堆栈跟踪(针对管理员)。
  2. 错误消息(针对所有人)。
  3. 事件 ID。

遵循的方法:

  1. 定义了如下所示的自定义类,并使用Session将对象保存在Global.asax中
  2. 在错误页面中检索该对象并显示错误。

    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 或
  • 无需使用 session 上下文即可将自定义对象传递到错误页面的任何其他方式。

最佳答案

您可以使用 Server.Transfer 将您带到错误页面。这允许您在内存中维护页面状态( using the HttpContext.Items collection )。尽管在某些情况下您需要禁用输出缓存。 HttpContext.AllErrors列表已包含请求期间引发的所有异常。

在 Azure 表中存储错误详细信息将是更好的解决方案,因为您可以查询错误详细信息并根据到达表中的新消息设置事件。这里可能的问题是 Azure 表存储是否首先是导致异常的原因。

最好的解决方案是使用 Azure Diagnostics 收集您的事件。这些可以配置为定期自动传输到存储。

关于javascript - 在没有 session 的情况下将异常消息传递到错误页面 ASP.NET 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10267641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com