2012-07-27 113 views
4

在VS2010 SP1中调试我的MVC 4应用程序时,调用了Application_Error()处理程序,但Server.GetLastError()为空。Application_Error被调用,但没有异常

protected void Application_Error() 
{ 
    var exception = Server.GetLastError(); 
    // exception is null. How is that possible? 
} 

MSDN statesApplication_Error

如果你的应用程序...的任何位置发生未处理的异常称为...您可以获取有关从GetLastError方法最近的错误信息。

MSDN文档为Server.GetLastError()指出

返回值:上一个异常被抛出。

我该如何处于Application_Error()被调用的状态,但Server.GetLastError()返回null?

+0

我认为Application_OnError在某处显式调用。所以它被称为尽管没有例外。也许你可以在整个解决方案中搜索“Application_OnError”字符串,并确认这不是明确调用的。 – Narendra 2012-07-27 06:59:59

+0

@Rain:它没有明确地被调用。 – 2012-07-27 07:24:48

+0

请检查。 http://stackoverflow.com/questions/343014/asp-net-custom-error-page-server-getlasterror-is-null – Narendra 2012-07-27 07:36:07

回答

2

您是否在您的web.config中使用自定义错误处理?我相信如果浏览器发出重定向,以前的异常将会丢失。以look at this answer并查看您的情况是否相似。

+0

对接受的答案的评论说异常在Application_Error中仍然可用,但在错误页面显示时丢失。在我的情况下,我几乎总是有可用的例外。只有一次,我没有想过为什么。 – 2012-07-27 17:13:15