.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. 验证修复效果
- 清理解决方案并重新构建项目
- 启动应用,检查错误是否消失
- 访问需要授权的页面,确认是否自动跳转到
/Login登录页
内容的提问来源于stack exchange,提问作者Mani J
相关产品推荐
相关产品推荐

