【发布时间】: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