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

ASP.NET Core 6 MVC发布后登录失效,移除UseHsts解决后存疑

保留ASP.NET Core 6 MVC中UseHsts功能的可行方案

我开发了一款设备管理的ASP.NET Core 6 MVC应用,通过Visual Studio 2022脚手架搭建登录系统,连接本地数据库后,用Web Deploy发布到搭载.NET Core宿主的Windows 10 IIS 7上。本地测试时登录功能正常,但发布后通过8080端口登录失败,排查后发现是App.UseHsts()导致应用启动故障,移除该行代码后问题解决,想找到保留UseHsts功能的可行方案。

相关代码片段:

if (!app.Environment.IsDevelopment())
{
   app.UseExceptionHandler("/Home/Error");
   // The default HSTS value is 30 days. You may want to change this 
   for production scenarios, see https://aka.ms/aspnetcore-hsts.
   app.UseHsts();
}

以下是几种保留UseHsts功能的方案:

  • 排除特定HTTP端口/主机
    HSTS核心是强制客户端用HTTPS访问,8080作为HTTP端口会触发强制跳转逻辑导致异常。可通过配置UseHsts的排除规则,跳过本地8080端口的HSTS强制:
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    app.UseHsts(options =>
    {
        options.ExcludedHosts.Add("localhost:8080");
        // 可根据实际情况添加其他需要排除的主机或端口
    });
}
  • 在IIS中配置HTTPS绑定
    如果生产环境需要启用HSTS,建议直接在IIS上配置HTTPS绑定(使用标准443端口),并申请有效的SSL证书。这样应用通过HTTPS对外提供服务,HSTS可正常生效,同时避免HTTP端口带来的冲突问题。

  • 自定义HSTS参数配置
    根据生产场景需求,调整HSTS的参数,比如修改缓存时长、是否包含子域名、是否加入预加载列表等,让配置更贴合实际业务:

app.UseHsts(options =>
{
    options.MaxAge = TimeSpan.FromDays(30); // 自定义缓存时长
    options.IncludeSubDomains = true; // 对所有子域名生效
    options.Preload = true; // 加入HSTS预加载列表
});

内容的提问来源于stack exchange,提问作者Tanguy LEBRET

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:35:20