我正在将使用 WebApi Preview 5(当时它是 WCF 的一部分)开发的项目迁移到 WebApi 的最终版本(MVC4 的一部分)。有一个文档描述了这个过程,但它非常简单,并没有涵盖大部分问题。
现在我面临的问题之一是GlobalErrorHandler是通过从HttpErrorHandler继承然后覆盖OnTryProvideResponse而创建的,它用于与 Elmah 挂钩错误处理。现在它已在 AppStart 上注册,如下所示:
var configuration = new WebApiConfiguration();
//some other configuration for security and CreateInstance
configuration.ErrorHandlers =
(handlers, endpoint, description) => handlers.Add(new GlobalErrorHandler())
};
//then some registration
RouteTable.Routes.MapServiceRoute<SomeObject>("routeName", configuration);
然后将不同的路由映射到此配置。所有这些代码在 MVC4 WebApi 的新世界中都不起作用,似乎 HttpErrorHandler 之间存在冲突,甚至无法正确实现其成员。
现在我已经看到了关于如何使用 WebApi 注册 Elmah 的一般帖子,但我试图尽可能地坚持原始代码,并且我假设 - 可能我错了 - 有一个直接相当于微软在预览版以及他们在最终版中发布的内容。所以我的问题:
- ASP.NET MVC4 WebApi 中这个全局错误处理注册的等价物是什么?
- 我是否需要像这里一样进行配置(默认的 webapi 示例项目似乎没有类似的代码)
- 该路由注册行代码的等效项是什么:RouteTable.Routes.MapServiceRoute("routeName", configuration);