小编Jon*_*Wik的帖子

IIS部署的ASP.NET Core应用程序出现间歇性431请求标头过长的错误

我正在使用一个ASP.NET Core应用程序,该应用程序GraphQL通过RestSharp使用一个端点来检索数据。这是一个Intranet类型的应用程序,已部署在Windows 2016 IIS服务器上,我们正在使用Windows身份验证。我们遇到的问题是,属于大量活动目录组的某个用户正在间歇性获得431 Request标头过长的错误。

我尝试了以下操作:

  1. 我设置了IISDefaults在startup.cs该应用程序与服务并重:

    services.AddAuthentication(IISDefaults.AuthenticationScheme);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我在RestRequest中传递UseDefaultCredentials

    var client = new RestClient(endpoint);
    var request = new RestRequest(Method.POST);
    request.UseDefaultCredentials = true;
    request.AddHeader("content-type", "application/json");
    request.AddParameter("application/json", data, ParameterType.RequestBody);
    IRestResponse response = client.Execute(request);
    return response.Content;
    
    Run Code Online (Sandbox Code Playgroud)
  3. 设置注册表项,MaxFieldLength并将MaxRequestBytes其设置为允许的最大值。

从stdout记录:

信息:Microsoft.AspNetCore.Server.Kestrel [17]连接ID“ 0HLIABLA41UKH”错误的请求数据:“请求标头太长。” Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException:请求标头太长。Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection.TakeMessageHeaders(ReadOnlySequence 1 buffer, SequencePosition& consumed, SequencePosition& examined) at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection.ParseRequest(ReadOnlySequence1缓冲区,SequencePosition&已使用,SequencePosition&已检查)在Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException.Throw (RequestRejectionReason原因)处。 Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests [TContext](IHttpApplication 1 application) at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequestsAsync[TContext](IHttpApplication1应用程序)上的AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection.TryParseRequest(ReadResult result,Boolean&endConnection)Microsoft.AspNetCore。

c# iis kestrel-http-server asp.net-core

2
推荐指数
1
解决办法
1066
查看次数

标签 统计

asp.net-core ×1

c# ×1

iis ×1

kestrel-http-server ×1