在Web Api OWIN自托管

时间:2017-08-24 13:15:49

标签: c# asp.net-web-api owin self-host-webapi

我在Service Fabric中托管了一个Web Api 2应用程序,它使用Microsoft.AspNet.WebApi.OwinSelfHost来托管服务。我的Startup课程非常典型:

public static class Startup
{
    public static void ConfigureApp(IAppBuilder app)
    {
        var config = new HttpConfiguration();

        config.MapHttpAttributeRoutes();
        // ...

        app.UseWebApi(config);
    }
}

服务farbric服务正在以CreateServiceInstanceListeners()方法启动Web侦听器:

protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
    return new[]
    {
        new ServiceInstanceListener(serviceContext => new OwinCommunicationListener(Startup.ConfigureApp, serviceContext, "WebApiEndpoint"))
    };
}

OwinCommunicationListener是一个服务结构监听器,最终将启动Web服务器:

public Task<string> OpenAsync(CancellationToken cancellationToken)
{
    // ...
    WebApp.Start(this.listeningAddress, appBuilder => this.startup(appBuilder)));

    return Task.FromResult(this.publishAddress);
}

我遇到了一些问题,我试图通过请求标头传递大量数据。我似乎达到了极限,因为我的请求被拒绝了以下内容:

  

错误请求 - 请求太长   HTTP错误400.请求标头的大小太长。

有没有办法配置自托管的web api以增加请求标头的限制?

1 个答案:

答案 0 :(得分:1)

当然必须有办法增加自托管的Web API标头长度。

但你真的想这么做吗?最有可能的是,您最终会遇到更多配置(其他Web服务器,防火墙,负载平衡器,API客户端等)。

不需要在请求标头中发送大量数据的正确架构将使您的生活更加轻松。