如何正确处理ASP.NET MVC中从控制器抛出的异常?该HandleError属性似乎只处理由MVC基础结构抛出的异常,而不是我自己的代码抛出的异常.
使用此web.config
<customErrors mode="On">
<error statusCode="401" redirect="/Errors/Http401" />
</customErrors>
Run Code Online (Sandbox Code Playgroud)
使用以下代码
namespace MvcApplication1.Controllers
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
// Force a 401 exception for testing
throw new HttpException(401, "Unauthorized");
}
}
}
Run Code Online (Sandbox Code Playgroud)
不会导致我所希望的.相反,我得到通用的ASP.NET错误页面,告诉我修改我的web.config以查看实际的错误信息.但是,如果不是抛出异常而是返回无效的View,我会得到/Shared/Views/Error.aspx页面:
return View("DoesNotExist");
Run Code Online (Sandbox Code Playgroud)
像我上面所做的那样在控制器中抛出异常似乎绕过了所有HandleError功能,那么创建错误页面的正确方法是什么,以及如何在MVC基础架构中发挥良好作用?