【问题标题】:Global Exception Handler in Web API 2.2 is not catching an exceptionWeb API 2.2 中的全局异常处理程序未捕获异常
【发布时间】:2015-01-02 06:26:19
【问题描述】:

我在 .Net 4.5 中有一个 WebForms 网站项目,我在其中添加了 ASP.Net Web API 2.2 NuGet 包。 正在成功调用 Web API 方法并返回预期值。

但是,在我为 Web API 2.2 创建了一个全局异常处理程序类并将控制器类名从 ProductController 更改为 Product 以强制出现以下错误后,全局异常处理程序没有捕获到此错误。

从 ProductController 的 Web API 类中删除控制器后缀时的错误消息

{"Message":"No HTTP resource was found that matches the request URI 'http://localhost/mysite/Vendors/api/
 Product/SaveProductName'.","MessageDetail":"No type was found that matches the controller named 'Product'."}

我的问题:为什么全局异常处理程序没有捕捉到这个错误,而是在成功找到Web API方法时捕捉到Web API方法中抛出的异常即ProductController类名没有更改为故意导致例外?

如下全局异常处理程序

public class GlobalExceptionLogger : ExceptionLogger
{
 public GlobalExceptionLogger()
  {

  }

public override void Log(ExceptionLoggerContext context)
 {
    if (context != null && context.Exception != null)
    { 
          MyLogging.Log( context.Exception );
    }
    base.Log(context);
 }
}

Web API 控制器类(对于全局异常处理程序未捕获的错误,我将类名更改为 Product)

 public class ProductController: ApiController
{
    //Methods omitted to SAVE SPACE
}

【问题讨论】:

    标签: exception-handling asp.net-web-api2


    【解决方案1】:

    它没有被捕获,因为 web api 捕获了它并将其转换为 404 响应。框架自己处理这种情况,而不是用户代码。

    【讨论】:

      猜你喜欢
      • 2018-06-14
      • 2013-10-25
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      • 1970-01-01
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多