Как правильно обрабатывать исключения, выданные из контроллеров в 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?