2017-08-24 56 views
2

我有一個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來增加請求頭的限制?

回答

1

當然,必須有方法來增加自託管的Web API標頭長度。

但你真的想這樣做嗎?最有可能的是,你最終會與更多的配置(其他Web服務器,防火牆,負載均衡器,API客戶端等)作鬥爭

一個適當的架構,不涉及在請求頭中發送大量的數據將使將來你的生活會輕鬆很多。

+0

這是一個很大的SAML令牌。 – Dismissile

+0

如何在標頭中保留標記的散列並在實體中移動實際標記? –

+0

對於請求主體的限制是一樣的,就我所知而言。將它移動到身體不會改變任何事情。 – Dismissile