У меня есть вопрос о том, как лучше всего использовать HandleErrorAttribute в моем приложении MVC 5. Как мы знаем, мы можем добавить этот атрибут в такие глобальные фильтры:
filters.Add(new HandleErrorAttribute{View = "Error"});
Это подразумевает, что приложение отображает представление "Ошибка" каждый раз, когда на любом уровне приложения возникает необработанное исключение. Но если у меня есть какая-то логика в другом глобальном фильтре авторизации или действия, который выдает какое-то исключение, то, когда исключение выдается впервые, приложение пытается перенаправить в представление ошибок, снова другие фильтры начинают выполняться и выдают то же исключение опять же, поэтому asp.net, чтобы избежать зацикливания, завершает работу приложения. Итак, каков наилучший способ использовать этот атрибут HandleErrorAttribute, чтобы избежать такого поведения? Спасибо!
Изменить: После некоторой отладки я обнаружил, что это не обычное поведение HandleErrorAttribute, поэтому зацикливание происходит для меня, только когда я использую пользовательские маршруты, например
{key}/{controller}/{action}
и когда в логике фильтра возникает какая-то ошибка, приложение пытается перенаправить в представление ошибок, но опять начинает действовать другая логика фильтра, и я даже вижу значение "Ошибка" в параметре маршрута {key}, поэтому оно нежелательно поведение. Когда я использую маршрут по умолчанию {controller}/{action}
этого не происходит, и я точно получаю представление об ошибках, не выполняя глобальную логику фильтра во второй раз.