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

.NET Core 2.2升级.NET 8.0后Cookie配置报错及登录页异常求助

1. 移除废弃的Cookie.Expiration配置

在.NET Core 3.0及后续版本(包括.NET 8)中,CookieAuthenticationOptions.Cookie.Expiration属性已被废弃,框架会直接忽略该属性并抛出错误。你的代码中同时设置了ExpireTimeSpan和Cookie.Expiration,只需删除废弃的配置项即可:

修改后的认证Cookie配置:

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
        .AddCookie(options =>
        {
            options.LoginPath = "/Login";
            options.Cookie.HttpOnly = true;
            options.SlidingExpiration = true;
            options.ExpireTimeSpan = TimeSpan.FromHours(24); // 保留这个控制过期时间
            options.Cookie.MaxAge = TimeSpan.FromHours(24);
            // 移除以下废弃行:options.Cookie.Expiration = TimeSpan.FromHours(24);
        });

2. 修正中间件顺序(关键)

你的中间件顺序存在错误:UseSession()必须放在UseAuthentication()和UseAuthorization()之前,否则会话无法在认证流程中正常初始化,导致登录页无法触发。

调整后的中间件配置:

app.UseHttpsRedirection();
app.UseCookiePolicy();
app.UseStaticFiles();
app.UseForwardedHeaders();
app.UseRouting();
// 先初始化Session,再执行认证授权
app.UseSession();
app.UseAuthentication();
app.UseAuthorization();

// 务必添加MVC端点路由(如果未配置)
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

3. 验证修复效果

  1. 清理解决方案并重新构建项目
  2. 启动应用,检查错误是否消失
  3. 访问需要授权的页面,确认是否自动跳转到/Login登录页

内容的提问来源于stack exchange,提问作者Mani J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 00:26:18