Я пытаюсь найти идеальную стратегию обработки исключений для моего проекта MVC. Я сделал следующее и ищу отзывы.
Проблема:
У меня есть разные типы результатов (Страницы, Частичные страницы, JSON, Файлы и т. Д.). Controller.OnException()
не имеет простого способа определить, какого результата ожидает клиент. Безо всякого особенного я предоставляю HTML-страницу, когда им нужен JSON и т. Д., Что приводит к проблемам с отображением.
Решение:
У меня есть абстрактный BaseController
, в котором есть такие служебные функции, как HandleJsonException()
, HandlePartialPageException()
, HandlePageException()
и т. Д. Эти функции будут:
a) Передайте в Enterprise Library для регистрации и уведомлений.
b) Установите представление результатов в формате, который ожидает клиент.
c) Установите соответствующий код статуса Http для ошибки.
Я делю свои действия на разные контроллеры в зависимости от типа результата. Например, вместо AbcController
у меня есть AbcPageController
и AbcJsonController
. OnException для этого контроллера вызывает один из утилит базового класса.
JavaScript (для представлений JSON и Partial Page) просматривает код состояния для управления поведением в некоторых случаях.
Меня беспокоит то, что логика отображения определяет дизайн контроллеров и, следовательно, влияет на маршрутизацию (не URL-адреса, а, разумеется, маршруты). Кроме того, это нарушает предыдущие стратегии наследования в отношении общего OnAuthenticate на базовых контроллерах.
В любом случае ... Ищете обзор. И, возможно, ссылки на решения этой проблемы других людей.
Приветствия