在两个不同的应用程序中,一个是用VS2008 MVC项目自定义另一个样例MVC应用程序,[HandleError]不捕捉exception。 在示例应用程序中我有: [HandleError] public class HomeController : Controller { public ActionResult Index() { ViewData["Message"] = "Welcome to ASP.NET MVC!"; throw new Exception(); return View(); } public ActionResult About() { return View(); } } 这只是默认的控制器,抛出了一个用于testing的exception。 但它不起作用。 而不是去默认的error.aspx页面,它显示在浏览器中的debugging信息。 这个问题首先出现在我正在处理的自定义应用程序中,这导致我使用示例应用程序对其进行testing。 认为它与我在自定义应用程序中所做的更改有关,我将示例应用程序完全保持不变,并且在throw方法中throw的exception(yuck)。 我很难过 我错过了什么?
我如何去在asp.net MVC预览5中的[HandleError]filter? 我在我的Web.config文件中设置了customErrors <customErrors mode="On" defaultRedirect="Error.aspx"> <error statusCode="403" redirect="NoAccess.htm"/> <error statusCode="404" redirect="FileNotFound.htm"/> </customErrors> 并把[HandleError]放在我的控制器类上面,如下所示: [HandleError] public class DSWebsiteController: Controller { [snip] public ActionResult CrashTest() { throw new Exception("Oh Noes!"); } } 然后我让我的控制器从这个类inheritance,并调用CrashTest()。 Visual Studio暂停在错误,并按f5继续后,我重新路由到Error.aspx?aspxerrorpath = / sxi.mvc / CrashTest(其中sxi是所用的控制器的名称。当然path无法find,我得到“/'应用程序中的服务器错误”404。 这个网站已经从预览版3移植到了5.除了error handling以外,所有的东西都运行(并没有太多的工作来移植)。 当我创build一个完整的新项目,error handling似乎工作。 想法? – 注意 – 由于这个问题现在有超过3K的意见,我认为这是有利的,把我目前(ASP.NET MVC 1.0)使用。 在mvc contrib项目中有一个叫做“RescueAttribute”的精彩属性,你也许应该检查一下;)