You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET使用Http.Sys认证时HTTP/2无法正常工作的问题求解

问题原因

你的推测是正确的,Http.Sys在启用Windows集成认证(NTLM/Negotiate)时默认禁用HTTP/2,因为传统Windows认证基于单连接的身份绑定,与HTTP/2的多路复用特性存在原生兼容问题,只有较新版本的Windows+Http.Sys组合才支持二者同时使用。

解决方案

前置要求

  • 服务器操作系统版本必须为 Windows 10 1709+ / Windows Server 2019+,低版本系统的Http.Sys不支持认证+HTTP/2的组合
  • 服务运行时版本需为 .NET Core 3.0+ / .NET 5+,旧版本框架未开放相关兼容配置

服务端Http.Sys配置调整

修改5001端口的服务配置,显式开启HTTP/2兼容认证的开关:

.UseHttpSys(options =>
{
    // 新增:显式开启HTTP/2
    options.EnableHttp2 = true;
    options.Authentication.Schemes =
        AuthenticationSchemes.Negotiate | // 优先用Negotiate走Kerberos,避免NTLM的兼容问题
        AuthenticationSchemes.NTLM;
    options.Authentication.AllowAnonymous = false;
    options.UrlPrefixes.Add("https://example.com:5001");
});

如果仅用Kerberos认证,可移除AuthenticationSchemes.NTLM配置,能进一步提升兼容性

客户端配置调整

  • WinHttpHandler请求场景

新增HTTP/2多路复用开启配置,避免自动降级:

var handler = new WinHttpHandler()
{
    SslProtocols = SslProtocols.Tls12,
    ServerCredentials = CredentialCache.DefaultCredentials,
    // 新增:开启HTTP/2多路复用
    Http2MultiplexingEnabled = true
};
           
var httpClient = new HttpClient(handler)
{
    DefaultRequestVersion = HttpVersion.Version20,
    // 新增:默认请求版本策略设为要求最高版本
    DefaultVersionPolicy = HttpVersionPolicy.RequestVersionOrHigher
};
  • HttpClientHandler请求场景

开启预认证,同时确保SPN配置正确(需在域控中为服务运行账号注册HTTP/example.com的服务主体名称,否则Negotiate会回退到NTLM导致401):

var handler = new HttpClientHandler()
{
    SslProtocols = SslProtocols.Tls12,
    Credentials = CredentialCache.DefaultCredentials,
    // 新增:开启预认证
    PreAuthenticate = true
};
           
var httpClient = new HttpClient(handler)
{
    DefaultRequestVersion = HttpVersion.Version20,
    DefaultVersionPolicy = HttpVersionPolicy.RequestVersionOrHigher
};
  • HttpWebRequest请求场景

HttpWebRequest是.NET框架遗留的过时API,原生不支持HTTP/2,无配置修复空间,直接改用HttpClient即可。

可选验证项

如果配置后仍不生效,可检查服务器注册表:

  1. 打开注册表路径HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
  2. 新增名为EnableHttp2Tls的REG_DWORD值,设为1
  3. 重启服务器生效

内容的提问来源于stack exchange,提问作者Andrey Chernykh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:09:01