在Web Api OWIN自托管中增加请求头限制

4

我有一个Web Api 2应用程序,托管在Service Fabric中,使用Microsoft.AspNet.WebApi.OwinSelfHost来托管服务。我的启动类很典型:

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

        config.MapHttpAttributeRoutes();
        // ...

        app.UseWebApi(config);
    }
}

在其CreateServiceInstanceListeners()方法中,服务织物服务启动Web侦听器:

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

OwinCommunicationListener 是一个 Service Fabric 监听器,最终将启动 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

肯定有办法增加自托管的 Web API 标头长度。

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

一个合适的架构,不涉及在请求标头中发送大量数据,将使您未来的生活变得更加轻松。


1
这是一个大型的SAML令牌。 - Dismissile
如何在标头中保留令牌的哈希值并将实际令牌移动到正文中? - Mihai Dinculescu
据我所知,请求体和限制是相同的。将其移至请求体中不会改变任何内容。 - Dismissile
你确定吗?默认值为64兆。https://msdn.microsoft.com/zh-cn/library/system.web.http.selfhost.httpselfhostconfiguration.maxreceivedmessagesize(v=vs.108).aspx#feedback - Mihai Dinculescu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接