我正在使用MVC4,并且希望能够从ontroller中抛出HttpExceptions,并在单独的控制器中处理它们。
我为此设置了<customErrors mode="On" defaultRedirect="/Error"/>
。这有效,但在我的控制器中,我希望能够访问异常。
我希望有两种模式:
处理HttpException的实例,以便从控制器中抛出HttpException并相应地处理它
处理所有其他错误。
如果是第一个,我想向useragent提供适当的状态代码,可能还有一个视图。在第二种情况下,我想呈现状态为500的useragent,并显示带有可选消息的默认视图。
为此,我想我需要访问异常数据 - 至少,我想不出任何其他正确的方法来做到这一点。
设置此方法的正确方法是什么?我知道在MVC中有关于错误处理的其他问题很多,但似乎没有人回答这些问题。
答案 0 :(得分:1)
but in my controller I would like to be able to access the exception.
您是否尝试过Server.GetLastError:
Exception ex = Server.GetLastError();
Server.GetLastError() - 应该在global.asax的Application_Error中使用,在这种情况下你可以处理像described here这样的最后一个错误,除此之外你应该删除
filters.Add(new HandleErrorAttribute());
在FilterConfig.cs中
了解更多信息:
Application_Error not firing when customerrors = "On"
ASP.NET custom error page - Server.GetLastError() is null
http://www.secretgeek.net/custom_errors_mvc.asp
http://devstuffs.wordpress.com/2010/12/12/how-to-use-customerrors-in-asp-net-mvc-2/