正如here所述。
我想知道是否可以通过邮件发送YSOD的HTML渲染异常,而不使用ELMAH?我正在处理错误并向用户显示自定义错误页面。我也通过邮件发送异常一般信息,但我真的想知道我是否可以将它们包装到ASP.NET的真正内置YSOD引擎中并保持HTML格式。
UPDATE1:
我有自定义异常(DupplicatedArbsException),它返回一个带有我认为是“托管异常”的消息的视图。但是,如果它是我没有捕到的真正错误,它将返回错误视图。
[HandleError(ExceptionType = typeof(Exception), View = "Error")]
[HandleError(ExceptionType = typeof(DuplicatedArbsException), View = "ErrorViewArbs")]
public ActionResult Create(string id, int? version)
{
//...
}
HandleError引发当前什么都不做。
protected override void OnException(ExceptionContext filterContext)
{
var ex = filterContext.Exception;
base.OnException(filterContext);
}
...
<customErrors mode="On" defaultRedirect="Error"/>
customErrors mode =“off”中引发的异常是来自asp.net的YSOD。但是,当我将customErrors mode =“on”时,这些异常不会包含在它的html等效内容中,而只包含异常消息(根本没有html)。
答案 0 :(得分:1)
您可以处理global.asax中的Application_Error
事件,该事件是每次未处理异常时由ASP.NET引擎触发的:
protected void Application_Error(object sender, EventArgs e)
{
var app = (HttpApplication)sender;
var context = app.Context;
// get the exception that was unhandled
Exception ex = context.Server.GetLastError();
// TODO: log, send the exception by mail
}