在ASP.NET Core中使用HTTP.sys进行Windows身份验证时,有时会遇到读取ECONNRESET错误的问题。这是由于在长时间运行后,HTTP.sys插件从TCP栈中卸载,因此所有连接都被关闭。
要解决这个问题,可以使用以下代码示例将HTTP.sys配置为保持长连接:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup()
.UseHttpSys(options =>
{
options.Authentication.Schemes = AuthenticationSchemes.NTLM;
options.Authentication.AllowAnonymous = false;
options.MaxConnections = 100;
options.MaxRequestBodySize = 30000000;
options.UrlPrefixes.Add("http://localhost:5000");
options.RequestQueueLimit = 5000;
options.EnableResponseCaching = false;
options.MaxResponseBufferSize = 30000000;
options.Authentication.ExtendedProtection = ExtendedProtectionPolicy.Never;
});
}
在这个示例代码中,options.MaxConnections和options.RequestQueueLimit设置为允许HTTP.sys保持长连接。
使用此代码示例可以解决ASP.NET Core中使用HTTP.sys进行Windows身份验证时遇到的读取ECONNRESET错误问题。