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

.NET 6 MVC应用调试与IIS部署时请求头长度限制差异原因

问题成因分析

VS调试和IIS部署环境的核心差异在于服务器层级的请求头限制配置不同:

  • 本地调试时,.NET 6 MVC应用直接使用Kestrel服务器,其默认的MaxRequestHeadersTotalSize(请求头总大小上限)为32768字节(32KB),所以20KB的请求头可以正常处理。
  • 部署到IIS时,IIS作为反向代理会先对请求进行校验,它的默认maxRequestHeadersSize(请求头总大小限制)为16384字节(16KB)。但由于IIS自身会在请求中添加一些额外的头部信息,实际留给客户端请求头的可用空间会小于这个值,这就导致仅12KB左右的客户端请求头就触发了400错误。

另外,你提到的分块认证Cookie是请求头过大的主要来源,但IIS的校验是针对整个请求头的总大小,而非单个Cookie的大小。

解决方法

1. 临时缓解:调整IIS的请求头限制

在应用的web.config中添加或修改requestFiltering配置,扩大请求头大小上限:

<system.webServer>
  <security>
    <requestFiltering>
      <!-- 设置为32KB,与Kestrel默认值一致,可按需调整更大值 -->
      <requestLimits maxRequestHeadersSize="32768" />
    </requestFiltering>
  </security>
</system.webServer>

如果后续请求头可能超过Kestrel的默认限制,也可以同步调整Kestrel的配置(在Program.cs中):

builder.WebHost.ConfigureKestrel(options =>
{
    // 设置为64KB,按需调整
    options.Limits.MaxRequestHeadersTotalSize = 65536;
});

2. 根本解决:缩小认证Cookie体积

这是你已经在推进的方案,具体可以从以下几点优化:

  • 精简Claim:仅保留业务必需的用户信息,移除不必要的Claim字段。
  • 启用Cookie压缩:在AddCookie配置中启用压缩,减少Cookie的实际传输大小:
    builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
        .AddCookie(options =>
        {
            options.CompressCookie = true;
            options.CookieManager = new ChunkingCookieManager();
        });
    
  • 改用Token认证:如果Cookie体积过大难以压缩,可以考虑JWT等Token认证方式,减少客户端存储的认证数据大小。
查看两种环境的请求头限制方法

查看Kestrel的请求头限制

  • 代码中输出配置值:在Program.cs中添加代码打印当前限制:
    builder.WebHost.ConfigureKestrel(options =>
    {
        Console.WriteLine($"Kestrel Max Request Headers Size: {options.Limits.MaxRequestHeadersTotalSize} bytes");
    });
    
  • 查看配置文件:检查appsettings.json中是否有Kestrel:Limits:MaxRequestHeadersTotalSize的配置项。

查看IIS的请求头限制

  • IIS管理器操作:打开IIS管理器→选中目标站点→点击“请求筛选”→右侧“编辑功能设置”,查看“最大请求头大小”的数值。
  • 命令行查看:使用appcmd命令查询站点配置:
    appcmd.exe list config "你的站点名称" /section:requestFiltering
    
  • 查看web.config:直接检查站点根目录下的web.config文件,查看requestLimits节点中的maxRequestHeadersSize值。

内容的提问来源于stack exchange,提问作者Richard Ward

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 16:15:29