如何解决 WebAPI + OData + Owin + Ninject 的处理程序映射问题
How to resolve handler mapping issues for WebAPI + OData + Owin + Ninject
我昨天发了这个...
如果我把启动配置方法的第一行改成...
var config = GlobalConfiguration.Configuration ?? new HttpConfiguration();
然后我在导航到根目录时遇到此错误...
The 'DelegatingHandler' list is invalid because the property
'InnerHandler' of 'CorsMessageHandler' is not null. Parameter name:
handlers
我发现一些信息表明 "HttpServer" 的基本实现中存在与批处理相关的错误,并且微软曾表示他们实现了一些新的批处理框架,因此不打算修复它, 博客提供了这个代码示例来修复错误 ...
public class BatchServer : HttpServer
{
private readonly HttpConfiguration _config;
public BatchServer(HttpConfiguration configuration)
: base(configuration)
{
_config = configuration;
}
protected override void Initialize()
{
var firstInPipeline = _config.MessageHandlers.FirstOrDefault();
if (firstInPipeline != null && firstInPipeline.InnerHandler != null)
{
InnerHandler = firstInPipeline;
}
else
{
base.Initialize();
}
}
}
显然这似乎没有解决我的问题。
所以,我被困在这两个错误之间,不知道如何解决。
我只是 运行 在类似的配置上遇到了同样的错误。基本上,您走在正确的道路上,但是在阅读 this 很好的答案后,我意识到我必须使用接受 HttpServer
.[=14= 的 .UseWebApi()
的不同重载]
所以,Startup.cs 应该看起来像这样:
HttpConfiguration config = GlobalConfiguration.Configuration ?? new HttpConfiguration();
config.EnableCors();
//the next two lines I had to change - instead of 'config' pass in the HttpServer
appBuilder.UseWebApi(GlobalConfiguration.DefaultServer);
appBuilder.UseNinjectWebApi(GlobalConfiguration.DefaultServer);
我昨天发了这个...
如果我把启动配置方法的第一行改成...
var config = GlobalConfiguration.Configuration ?? new HttpConfiguration();
然后我在导航到根目录时遇到此错误...
The 'DelegatingHandler' list is invalid because the property 'InnerHandler' of 'CorsMessageHandler' is not null. Parameter name: handlers
我发现一些信息表明 "HttpServer" 的基本实现中存在与批处理相关的错误,并且微软曾表示他们实现了一些新的批处理框架,因此不打算修复它, 博客提供了这个代码示例来修复错误 ...
public class BatchServer : HttpServer
{
private readonly HttpConfiguration _config;
public BatchServer(HttpConfiguration configuration)
: base(configuration)
{
_config = configuration;
}
protected override void Initialize()
{
var firstInPipeline = _config.MessageHandlers.FirstOrDefault();
if (firstInPipeline != null && firstInPipeline.InnerHandler != null)
{
InnerHandler = firstInPipeline;
}
else
{
base.Initialize();
}
}
}
显然这似乎没有解决我的问题。
所以,我被困在这两个错误之间,不知道如何解决。
我只是 运行 在类似的配置上遇到了同样的错误。基本上,您走在正确的道路上,但是在阅读 this 很好的答案后,我意识到我必须使用接受 HttpServer
.[=14= 的 .UseWebApi()
的不同重载]
所以,Startup.cs 应该看起来像这样:
HttpConfiguration config = GlobalConfiguration.Configuration ?? new HttpConfiguration();
config.EnableCors();
//the next two lines I had to change - instead of 'config' pass in the HttpServer
appBuilder.UseWebApi(GlobalConfiguration.DefaultServer);
appBuilder.UseNinjectWebApi(GlobalConfiguration.DefaultServer);