【发布时间】:2009-05-01 16:58:43
【问题描述】:
如何正确处理 ASP.NET MVC 中的控制器抛出的异常? HandleError 属性似乎只处理 MVC 基础架构抛出的异常,而不是我自己的代码抛出的异常。
使用这个 web.config
<customErrors mode="On">
<error statusCode="401" redirect="/Errors/Http401" />
</customErrors>
使用以下代码
namespace MvcApplication1.Controllers
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
// Force a 401 exception for testing
throw new HttpException(401, "Unauthorized");
}
}
}
并没有达到我所希望的结果。相反,我得到了通用的 ASP.NET 错误页面,告诉我修改我的 web.config 以查看实际的错误信息。但是,如果不是抛出异常,而是返回无效视图,我会得到 /Shared/Views/Error.aspx 页面:
return View("DoesNotExist");
像我在上面所做的那样在控制器中抛出异常似乎绕过了所有 HandleError 功能,那么创建错误页面的正确方法是什么?如何与 MVC 基础架构配合使用?
【问题讨论】:
标签: asp.net-mvc exception