ASP.NET 5.0 Razor项目无法设置Cookie该如何解决?
问题解决方法
核心原因
你使用了传统ASP.NET Framework专属的Cookie操作API,这类API在ASP.NET Core(你的项目是.NET 5 Razor Pages,属于Core体系)中已经被完全弃用,API定义和用法发生了变更,因此触发当前报错。
具体解决步骤
- 调整引用的命名空间
保留Microsoft.AspNetCore.Http引用,删除System.Web等不必要的引用,你的命名空间可以精简为以下内容:
using System; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.Extensions.Logging; using Microsoft.AspNetCore.Http;
- 替换Cookie设置代码
ASP.NET Core中无需实例化HttpCookie对象,直接调用Response.Cookies.Append方法即可完成Cookie设置,参考代码如下:
string token = Auth.password(username,password); Response.Cookies.Append("token", token, new CookieOptions { Expires = DateTimeOffset.Now.AddDays(30), // 可根据安全需求补充以下配置 HttpOnly = true, // 防止前端JS读取Cookie,降低XSS风险 SameSite = SameSiteMode.Lax, // 控制跨站Cookie发送策略 Secure = false // 如果是HTTPS站点可设置为true });
原代码报错说明
- 找不到
HttpCookie类型:该类型仅存在于.NET Framework的System.Web命名空间中,.NET Core/.NET 5+ 完全移除了该类型定义。 - 找不到
IResponseCookies的Add方法:ASP.NET Core中Response.Cookies实现的IResponseCookies接口,添加Cookie的方法为Append,不存在接收HttpCookie参数的Add方法。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

