Asp.net mvc 是否可以按需生成ASP.NET MVC死亡黄屏(YSOD)

Asp.net mvc 是否可以按需生成ASP.NET MVC死亡黄屏(YSOD),asp.net-mvc,exception-handling,yellow-screen-of-death,Asp.net Mvc,Exception Handling,Yellow Screen Of Death,如我所问 我想知道是否有可能在不使用ELMAH的情况下通过邮件发送YSOD的异常HTML呈现?我正在处理错误并向用户显示自定义错误页面。我还通过邮件发送异常一般信息,但是我真的很想知道是否可以将它们包装到ASP.NET的真正内置YSOD引擎中,并保留HTML格式 更新1: 我有我的自定义异常(DuPrPICTABARBSExtExchange),它返回一个带有我认为“托管异常”的消息的视图。但是,如果我没有捕捉到真正的错误,它将返回错误视图 [HandleError(ExceptionT

如我所问

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

更新1:

<>我有我的自定义异常(DuPrPICTABARBSExtExchange),它返回一个带有我认为“托管异常”的消息的视图。但是,如果我没有捕捉到真正的错误,它将返回错误视图

    [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=“off”中引发的异常是来自asp.net的YSOD。但是,当我打开customErrors mode=“on”时,这些异常不会被包装在它的html等价物中,而只会被包装在异常消息中(根本没有html)。

您可以在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
}

您可以在global.asax中处理
Application\u 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
}

帮助您进行搜索:YSOD是ASP.NET引擎的一部分,而不是.NET framework。帮助您进行搜索:YSOD是ASP.NET引擎的一部分,而不是.NET framework。由于我处理所有异常,因此从未引发应用程序错误。此外,context.Server.GetLastError()始终为空。如果处理所有异常,则永远不会看到YSOD。我只想截获YSOD异常,通过电子邮件将其发送给站点管理员,然后将非YSOD消息发送给用户。通常,在应用程序错误处理程序中,您可以截获异常。您还可以看一看,这将大大简化此任务。一个优点是不需要修改现有代码。你只需要在你的web.config.ok中插入一个节,我去掉了我的handleError on exception,所以现在出现了application_错误,我可以捕获它,现在从HttpApplication,我可以从YSOD访问HTML吗?因为我处理了所有异常,所以application_错误永远不会出现。此外,context.Server.GetLastError()始终为空。如果处理所有异常,则永远不会看到YSOD。我只想截获YSOD异常,通过电子邮件将其发送给站点管理员,然后将非YSOD消息发送给用户。通常,在应用程序错误处理程序中,您可以截获异常。您还可以看一看,这将大大简化此任务。一个优点是不需要修改现有代码。你只需要在你的web.config.ok中插入一个节,我去掉了我的handleError on exception,所以现在出现了application_错误,我可以从HttpApplication捕获它,现在我可以从YSOD访问HTML了吗?