我正在开发一个 ASP.NET Core 应用程序,该应用程序消耗GraphQL
端点通过RestSharp
检索数据。这是一个 Intranet 类型的应用程序,部署在 Windows 2016 IIS 服务器上,我们正在使用 Windows 身份验证。我们遇到的问题是属于大量 Active Directory 组的某个用户间歇性出现 431 Request headers too long 错误。
我已尝试以下操作:
-
我正在设置IISDefaults
in the startup.cs
对于应用程序和服务:
services.AddAuthentication(IISDefaults.AuthenticationScheme);
-
我在 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;
设置注册表项MaxFieldLength
and MaxRequestBytes
到允许的最大值。
从标准输出记录:
信息:Microsoft.AspNetCore.Server.Kestrel[17]
连接 ID“0HLIABLA41UKH”请求数据错误:“请求标头太长。”
Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException:请求标头太长。在 Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException.Throw(RequestRejectionReason 原因) 在 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(ReadOnlySequence
1 个缓冲区,SequencePosition& 消耗,SequencePosition& 检查)在 Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection.TryParseRequest(ReadResult 结果,Boolean& endConnection) 在 Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol .ProcessRequests[TContext](IHttpApplication1 application) at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequestsAsync[TContext](IHttpApplication
1 份申请)
信息:Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
通过设置 MaxRequestHeadersTotalSize Kestrel 选项解决了这个问题。默认为 32768。
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseKestrel(options =>
{
options.Limits.MaxRequestHeadersTotalSize = 1048576;
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)