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