Обрабатывать все исключения глобально в ASP.Net Web Api (global.asax) - PullRequest
0 голосов
/ 31 августа 2018

В настоящее время я использую Application_Error в global.asax для обработки исключений Web API, передачи их в журнал ошибок и их регистрации.

    void Application_Error(object sender, EventArgs e)
    {
        if (Server.GetLastError() != null)
        {
            exceptionController.Log(Server.GetLastError());
            Server.ClearError();
        }
    }

Он перехватывает некоторые исключения, но не все - например, 404 ошибки от сервера и т. Д. Как я могу перехватить больше исключений самостоятельно (что, я предполагаю, будет означать переопределение обработки исключений по умолчанию в ASP.Net). Есть ли способ сделать все это из global.asax, или есть что-то еще? Я хотел бы избежать блоков try catch finally на всех моих контроллерах.

Моды - существует миллион тем об этом, но есть также миллион одинаково уникальных ответов из разных периодов времени. Я так растерялся, что почувствовал необходимость еще раз спросить в 2018 году.

1 Ответ

0 голосов
/ 31 августа 2018

Если вы хотите обработать то, что в противном случае было бы 404 из фреймворка, вы можете добавить маршрут для обработки «всего остального» и вернуть настроенный ответ.

В конце таблицы маршрутов у нас есть универсальный маршрут, похожий на

        config.Routes.MapHttpRoute(
            name: "NotImplemented",
            routeTemplate: "{*data}",
            defaults: new { controller = "Error", action = "notimplemented", data = UrlParameter.Optional });

где мы генерируем пользовательский ответ. Возможно, вы сможете сделать что-то подобное в своей таблице маршрутов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...