在Web Api中增加请求头限制OWIN自己的主机

问题描述:

我有一个Web Api 2应用程序托管在使用Microsoft.AspNet.WebApi.OwinSelfHost托管服务的服务结构中。我的启动类是非常典型:在Web Api中增加请求头限制OWIN自己的主机

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

     config.MapHttpAttributeRoutes(); 
     // ... 

     app.UseWebApi(config); 
    } 
} 

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

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来增加请求头的限制?

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

但你真的想这样做吗?最有可能的是,你最终会与更多的配置(其他Web服务器,防火墙,负载均衡器,API客户端等)作斗争

一个适当的架构,不涉及在请求头中发送大量的数据将使将来你的生活会轻松很多。

+0

这是一个很大的SAML令牌。 – Dismissile

+0

如何在标头中保留标记的散列并在实体中移动实际标记? –

+0

对于请求主体的限制是一样的,就我所知而言。将它移动到身体不会改变任何事情。 – Dismissile