Я включил глобальную обработку ошибок для приложения, применив атрибут HandleError в регистрации filterConfig.
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
}
Затем я использую пользовательские ошибки (web.config), чтобы, надеюсь, отображать понятное сообщение об ошибке для каждой ошибки сервера.
<customErrors mode="On" ></customErrors>
Это, казалось, работало нормально для большинства исключений, и я получил ожидаемое поведение в том, что отображалось пользовательское представление страницы ошибок (Error.cshtml в общей папке просмотра).
Однако недавно я заметил, что это не то поведение, которое я вижу, если выданная ошибка является UnauthorizedAccessException.
Я немного озадачен этим, так как, глядя в скрипач, я вижу, что это исключение UnauthorizedAccessException возвращает обычную внутреннюю ошибку сервера 500, как это делает стандартное исключение.
Так почему же стандартное исключение соответствует моей настройке customError, а UnauthorizedAccessException — нет?
И как я могу заставить их вести себя одинаково, поскольку они оба по сути являются ошибкой, которую я хочу, чтобы конечный пользователь не видел.