.net 如何在MVC中钩住调用控制器动作?
在我的MVC3应用程序中,我有很多控制器和动作。有时在执行操作时引发异常。我希望能够记录这一点,并让异常由MVC处理 类似这样的伪代码:.net 如何在MVC中钩住调用控制器动作?,.net,asp.net-mvc-3,iis,.net,Asp.net Mvc 3,Iis,在我的MVC3应用程序中,我有很多控制器和动作。有时在执行操作时引发异常。我希望能够记录这一点,并让异常由MVC处理 类似这样的伪代码: try { MvcInvokeControllerAction( controller, action, params ); } catch( Exception e ) { trace( "Error while invoking " + controller + "-" + action + " with " + params
try {
MvcInvokeControllerAction( controller, action, params );
} catch( Exception e ) {
trace( "Error while invoking " + controller + "-" +
action + " with " + params + " details: " + getDetails( e ) );
throw;
}
我想要的是能够在MVC第一次处理异常之前捕获它,因为有时MVC启动会引发另一个异常,我在Application\u Error()
中看到后者,而原始异常是lots
如何实现这种挂钩?您可以覆盖BaseController
这将是控制器操作中所有异常的捕获块。把你所有的控制器都从BaseController上除掉
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
}
}
您可以在BaseController上覆盖
这将是控制器操作中所有异常的捕获块。把你所有的控制器都从BaseController上除掉
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
}
}
如何让异常传播?我是否只调用基本的
OnException()
?参见示例。不需要调用一个异常。MVc将自动为Controller ActionsHow中的任何错误调用OneException。我是否允许异常传播?我是否只调用基本的OnException()
?参见示例。不需要调用一个异常。对于控制器操作中的任何错误,MVc将自动调用OneException