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

.NET 6+ASP.NET Identity部署后会话自动终止问题排查

排查Plesk部署后ASP.NET Identity会话自动终止的问题

1. Cookie配置问题(优先排查)

本地开发与生产环境的Cookie默认配置存在差异,Plesk环境下需显式配置Cookie的有效期与安全属性:

  • 在Program.cs中明确设置Cookie过期规则,避免默认会话级Cookie导致的快速失效:
    builder.Services.ConfigureApplicationCookie(options =>
    {
        options.ExpireTimeSpan = TimeSpan.FromMinutes(60); // 自定义有效期,比如60分钟
        options.SlidingExpiration = true; // 每次请求自动刷新Cookie有效期
        options.Cookie.SameSite = SameSiteMode.Lax;
        // 若站点启用HTTPS,强制Cookie仅通过HTTPS传输
        options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
    });
    
  • 检查Plesk站点是否开启HTTPS,若开启但未设置CookieSecurePolicy,浏览器可能拒绝保存Cookie,直接导致会话丢失。

2. Plesk应用程序池回收策略

Plesk的IIS应用程序池若配置了短周期回收规则,会导致ASP.NET应用重启,进而使会话失效:

  • 登录Plesk面板,进入对应站点的应用程序池设置:
    • 查看「回收」选项,确认固定时间间隔是否被修改为短时长(默认1740分钟,若被改成5-10分钟会直接触发问题)
    • 检查「私有内存限制」,若应用内存占用超限会自动回收,可适当调高限制或禁用该选项
    • 确保「禁用重叠回收」未勾选,该选项可能导致会话在回收过程中丢失

3. 会话状态存储问题

若应用同时使用了Session功能,默认的InProc存储会在应用池回收时丢失数据:

  • 若无需Session功能,直接移除Program.cs中AddSession和UseSession相关代码
  • 若需要Session,改用分布式存储(如Redis、SQL Server),避免依赖进程内存储

4. Plesk反向代理/URL重写干扰

Plesk的URL重写规则或反向代理配置可能导致Cookie的路径、域名参数异常:

  • 检查Plesk的「URL重写」规则,确保未修改Cookie的路径或域名属性
  • 若站点使用了反向代理(如Cloudflare),需在Program.cs中配置转发头:
    app.UseForwardedHeaders(new ForwardedHeadersOptions
    {
        ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
    });
    
    同时在Plesk中开启「转发真实IP」选项

5. 机器密钥(Machine Key)一致性问题

ASP.NET应用重启或多实例部署时,需统一的机器密钥来加密/解密Cookie,否则重启后无法识别原有Cookie:

  • 在Plesk站点的「ASP.NET设置」中,找到「机器密钥」选项,生成并设置固定的验证密钥与加密密钥
  • 也可手动在web.config中添加配置:
    <system.web>
      <machineKey validationKey="生成的验证密钥" decryptionKey="生成的解密密钥" validation="SHA1" decryption="AES" />
    </system.web>
    

6. 登录页面的持久Cookie设置

确认登录时是否正确提交了RememberMe选项,若未勾选,Cookie会是会话级(关闭浏览器即失效),虽不是几秒失效的直接原因,但需排查:

  • 确保登录方法中SignInAsync的参数正确:
    await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: false);
    

建议先从Cookie配置和应用程序池回收策略入手排查,这是Plesk部署场景下最常见的触发原因。若需要进一步定位,可提供完整的Program.cs代码或Plesk应用程序池配置截图。

内容的提问来源于stack exchange,提问作者mesut yıldırım

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:22:37