2012-02-08 2 views
1

В моем приложении MVC3 у меня много контроллеров и действий. Иногда при выполнении действия возникает исключение. Я хочу, чтобы иметь возможность регистрировать это и разрешить исключение MVC.Как подключить вызов действия контроллера в MVC?

Что-то вроде этого псевдокода:

try { 
    MvcInvokeControllerAction(controller, action, params); 
} catch(Exception e) { 
    trace("Error while invoking " + controller + "-" + 
     action + " with " + params + " details: " + getDetails(e)); 
    throw; 
} 

То, что я хочу, чтобы иметь возможность поймать исключение, прежде чем он сначала обрабатывается MVC, потому что иногда MVC ногами в поднимает еще одно исключение, и я вижу, что последний в Application_Error() и Исходное исключение - это лоты.

Как достичь такого подключения?

ответ

1

Вы можете переопределить OnException Method На вашем Basecontrollor.

Это будет блок Catch для всех исключений в действиях Controllor. просто Exetnd все ваши Controllors от Basecontrollor

protected override void OnException(ExceptionContext filterContext) 
{ 
} 

Пример

public class BaseController : Controller 
{ 

    protected override void OnException(ExceptionContext filterContext) 
    { 
     base.OnException(filterContext); 
     // Handle error here 
    } 
} 


public class TestController : BaseController 
{ 
    public ActionResult Index() 
    { 
     // If any exceptions then will be caught by 
     // BaseController OnException method 
    } 
} 
+0

Как я позволяю исключение распространяется? Я просто называю базу 'OnException()'? – sharptooth

+0

См. Пример. не нужно вызывать OnException. MVc будет автоматически вызывать OnException для любых ошибок в процедурах Controllor – swapneel

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