2016-12-20 6 views
-2

У меня было много действий в контроллере. Есть ли способ попытаться поймать весь документ-контроллер один раз вместо того, чтобы вставлять try-catch в каждое действие?Любой способ попробовать поймать весь контроллер?

+1

Это похоже на классическую [проблему XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) - это плохая практика. Вы должны ловить только исключения, которые вы можете обработать. – EJoshuaS

+0

@EJoshuaS Спасибо, что это была полезная информация. – Rasme

ответ

0

Да, вы можете захватить событие Application_Error, которое будет обрабатывать все исключения, которые не обрабатываются кодом действия. Для получения дополнительной информации см. this article.

+0

Я вижу, где я должен положить его в MVC? – Rasme

+0

Он может зайти в [global.asax.cs] (https://www.codeproject.com/Questions/697469/About-Global-asax-File-in-MVC) –

+0

Недостатком является то, что это глобально, а не -controller. Кроме того, исходный вопрос по-прежнему выглядит как случай проблемы [XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). – EJoshuaS

2

можно переопределить OnException метод

protected override void OnException(ExceptionContext filterContext) 
{ 
    //your handling logic here 
    filterContext.ExceptionHandled = true; 
} 
+0

Где я могу разместить его в MVC? – Rasme

+0

@ Rasme прямо в контроллере, с которым вы хотите обрабатывать ошибки – Steve

0

Если вы хотите, чтобы поймать любое исключение во всех контроллерах в вашем MVC Application, а затем перейти на глобальных исключений фильтров, это ссылка, которая объясняет, как именно поймать и войти глобальные исключения в базу данных

http://www.dotnetcurry.com/aspnet-mvc/1260/exception-handling-logging-aspnet-mvc

Смежные вопросы