【发布时间】:2017-06-12 21:14:52
【问题描述】:
我有一个全局添加的自定义消息处理程序,如下所示:
public class CustomerHandler : DelegatingHandler
{
public CustomHandler(HttpConfiguration httpConfiguration)
{
InnerHandler = new HttpControllerDispatcher(httpConfiguration);
}
}
config.MessageHandlers.Add(new CustomHandler(config));
但是,我收到以下错误:
“DelegatingHandler”列表无效,因为“CustomHandler”的属性“InnerHandler”不为空。 参数名称:handlers
所以我把代码改成:
config.MessageHandlers.Add(new CustomHandler(config) { InnerHandler = null });
我得到一个错误:
ArgumentNullException
当我将处理程序添加到单个路由时,它工作正常。
var customHandler = new CustomHandler(config);
config.Routes.MapHttpRoute(
name: "default",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: new { id = @"^[0-9]+$" },
handler: customHandler
);
因此,当Innerhandler 设置正确或为空时,它总是会引发异常。
我错过了什么?
编辑
此自定义处理程序用于检查请求中是否存在特定标头,如果找到,则从内存缓存中获取用户详细信息。从处理程序更改为模块是否更有意义?
【问题讨论】:
标签: c# asp.net-web-api asp.net-web-api2 asp.net-web-api-routing