gpt4 book ai didi

c# - 将 ELMAH 日志 ID 传递到 ASP.NET 中的自定义错误页面时出现问题

转载 作者:太空狗 更新时间:2023-10-29 21:20:14 25 4
gpt4 key购买 nike

我正在使用 ELMAH在 ASP.NET Webforms 应用程序中记录未处理的异常。日志记录工作正常。

我想将 ELMAH 错误日志 ID 传递到自定义错误页面,该页面将使用户能够通过电子邮件向管理员发送有关错误的信息。我听从了 this answer 的建议.这是我的 global.asax 代码:

void ErrorLog_Logged(object sender, ErrorLoggedEventArgs args)
{
Session[StateKeys.ElmahLogId] = args.Entry.Id;

// this doesn't work either:
// HttpContext.Current.Items[StateKeys.ElmahLogId] = args.Entry.Id;
}

但是,在自定义错误页面上, session 变量引用和 HttpContext.Current.Items 给我一个 NullReference 异常。如何将 ID 传递到我的自定义错误页面?

最佳答案

这对我有用:

void ErrorLog_Logged(object sender, ErrorLoggedEventArgs args)
{
if (args.Entry.Error.Exception is HandledElmahException)
return;

var config = WebConfigurationManager.OpenWebConfiguration("~");
var customErrorsSection = (CustomErrorsSection)config.GetSection("system.web/customErrors");

if (customErrorsSection != null)
{
switch (customErrorsSection.Mode)
{
case CustomErrorsMode.Off:
break;
case CustomErrorsMode.On:
FriendlyErrorTransfer(args.Entry.Id, customErrorsSection.DefaultRedirect);
break;
case CustomErrorsMode.RemoteOnly:
if (!HttpContext.Current.Request.IsLocal)
FriendlyErrorTransfer(args.Entry.Id, customErrorsSection.DefaultRedirect);
break;
default:
break;
}
}
}

void FriendlyErrorTransfer(string emlahId, string url)
{
Server.Transfer(String.Format("{0}?id={1}", url, Server.UrlEncode(emlahId)));
}

关于c# - 将 ELMAH 日志 ID 传递到 ASP.NET 中的自定义错误页面时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2885487/

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