如何解决WebAPI + OData + Owin + Ninject的处理程序映射问题

时间:2015-09-17 10:05:58

标签: cors asp.net-web-api2 httphandler

我昨天发布了这个...

https://stackoverflow.com/questions/32615769/owin-webapi-odata-v4-aspnet-identity-initialisation

如果我将启动配置方法的第一行更改为...

var config = GlobalConfiguration.Configuration ?? new HttpConfiguration();

然后我在导航到根目录时遇到此错误...

  

'DelegatingHandler'列表无效,因为该属性   'CorsMessageHandler'的'InnerHandler'不为空。参数名称:   处理

我发现一些信息点缀在一起,表明“HttpServer”的基本实现有一个与批处理相关的错误,而且微软已经表示他们已经实现了一些新的批处理框架,因此无法修复它,提供的博客这个代码示例来修复bug ...

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();
        }
    }
}

显然这似乎并没有解决我的问题。

所以,我陷入了这两个错误之中,不知道如何离开。

1 个答案:

答案 0 :(得分:5)

我刚刚在类似的配置上遇到了同样的错误。基本上,你是在正确的道路上,但阅读this很好的答案,我意识到我必须使用接受.UseWebApi()的{​​{1}}的不同重载。

因此,Startup.cs看起来应该是这样的:

HttpServer