【问题标题】:if Exception happened in authorization filter in MVC如果在 MVC 的授权过滤器中发生异常
【发布时间】:2015-10-12 10:05:20
【问题描述】:

在我最近的采访中,面试官问了这样的问题

如果授权过滤器发生异常,程序流程如何发生?是直接进入异常过滤器,还是依次进入动作过滤器、结果过滤器、异常过滤器。

我说它会直接进入异常过滤器。但面试官对我的回答不太满意。有什么建议么?

我知道 mvc 过滤器的执行顺序。

1.Authorization 2.Action 3.Result 4.Exception 我们也可以为每个filter设置顺序。

但是如果上述任何一个过滤器出现异常,接下来会发生什么?是跳过结果过滤器直接进入异常过滤器,还是按顺序进入。

我用谷歌搜索但没有得到明确的想法。请指导我更正链接而不投反对票。

【问题讨论】:

  • 您的回答完全正确。如果任何其他过滤器中发生任何异常,程序流将进入异常过滤器。

标签: c# asp.net-mvc asp.net-mvc-4 model-view-controller


【解决方案1】:

我认为面试官可能一直在寻找答案,以便您对异常使用覆盖

protected override void OnException(ExceptionContext filterContext)
{ 
  Exception exception = filterContext.Exception;
  //Logging the Exception
  filterContext.ExceptionHandled = true;


  var Result = this.View("Error", new HandleErrorInfo(exception,
   filterContext.RouteData.Values["controller"].ToString(),
   filterContext.RouteData.Values["action"].ToString()));

  filterContext.Result = Result;

 }

【讨论】:

  • 覆盖异常有什么用。请提供完整的细节
  • 这将在任何本地 try catch 之前被调用,并在应用程序级别而不是方法级别进行调用
猜你喜欢
  • 1970-01-01
  • 2018-11-10
  • 2019-09-12
  • 2017-01-06
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 2012-07-14
  • 2017-04-08
相关资源
最近更新 更多