如何在 asp.net MVC 预览版5中使用 [HandleError]
过滤器?
我在 Web.config 文件中设置 customError
<customErrors mode="On" defaultRedirect="Error.aspx">
<error statusCode="403" redirect="NoAccess.htm"/>
<error statusCode="404" redirect="FileNotFound.htm"/>
</customErrors>
并像这样将[ HandleError ]放在 Controller 类的上方:
[HandleError]
public class DSWebsiteController: Controller
{
[snip]
public ActionResult CrashTest()
{
throw new Exception("Oh Noes!");
}
}
然后,我让控制器从这个类继承,并对它们调用 CrashTest ()。 Visual Studio 在出现错误时停止,按下 f5继续后,我被重新路由到 Error.aspx? aspxerrorpath =/sxi.mvc/CrashTest (其中 sxi 是所用控制器的名称)。 当然,路径无法找到,我得到“服务器错误在’/’应用程序。”404。
这个站点是从预览3移植到5的。 除了错误处理之外,所有东西都可以运行(移植的工作量不大)。 当我创建一个完整的新项目时,错误处理似乎可以正常工作。
有什么想法吗?
——注意——
由于这个问题现在有超过3K 的视图,我认为它将是有益的,把我目前使用的(ASP.NET MVC 1.0)。
在 Mvc 贡献项目中有一个很棒的属性叫做“ RescueAttribute”
你可能也应该去看看;)