2

在这里问。

我想知道是否有可能在不使用 ELMAH 的情况下通过邮件发送异常的 YSOD 的 HTML 渲染?我正在处理错误并向用户显示自定义错误页面。我也通过邮件发送异常一般信息,但是我真的很想知道我是否可以将它们包装到 ASP.NET 的真正内置 YSOD 引擎中并保持 HTML 格式。

更新1:

我有我的自定义异常(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)。

4

1 回答 1

1

您可以Application_Error在 global.asax 中处理由 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
}
于 2010-11-24T07:35:17.377 回答