2010-11-24 45 views
1

請問here按需生成ASP.NET MVC黃色死亡屏幕(YSOD)

我想知道是否有可能得到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模式提出的例外= 「off」 是asp.net的YSOD。但是,當我打開customErrors mode =「on」時,這些異常不會包含在它的html等價物中,而只是包含異常消息(根本沒有html)。

+1

爲了幫助你的搜索:在YSOD是部分ASP.NET引擎,而不是.NET框架。 – Omar 2010-11-24 04:06:15

+0

謝謝,我修改了它 – 2010-11-24 17:21:04

回答

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 
}