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

ASP.NET Cookie读取遇空引用异常,单服务器故障求助

Cookie读取空引用问题排查与解决

问题场景

登录页面创建名为Login的Cookie后,首页读取该Cookie时触发Object reference not set to an instance of an object错误(指向首页代码第二行)。5台部署服务器中仅一台出现此问题,Chrome、Edge、IE均能复现,且已确认Chrome客户端中该Cookie确实存在。

登录页面代码

HttpCookie cookie = new HttpCookie("Login");
cookie.Values["User"] = textBox.Text;
cookie.HttpOnly = true;
cookie.Path = Request.ApplicationPath;
cookie.Expires = DateTime.Now.AddDays(7);
Response.Cookies.Add(cookie);

首页读取代码

HttpCookie cookie = Request.Cookies["Login"];
string user = cookie.Values["User"];

排查与解决方法

  • 添加空引用防护
    先判断Cookie是否存在,再读取值,从代码层面避免空引用错误:

    string user = string.Empty;
    HttpCookie cookie = Request.Cookies["Login"];
    if (cookie != null && cookie.Values["User"] != null)
    {
        user = cookie.Values["User"];
    }
    

    或者使用C#空合并运算符简化:

    HttpCookie cookie = Request.Cookies["Login"];
    string user = cookie?.Values["User"] ?? string.Empty;
    
  • 检查服务器应用路径配置
    异常服务器的Request.ApplicationPath可能返回非预期值,导致Cookie的Path范围受限,首页无法匹配读取。可直接将Cookie路径设为根路径测试:

    cookie.Path = "/";
    
  • 验证服务器时间同步
    Cookie的过期时间依赖服务器本地时间,若该服务器时间与客户端偏差过大,可能导致Cookie被判定为过期失效,需同步服务器时间至正常范围。

  • 检查路由与域配置
    确认登录页与首页的请求路径层级是否一致,异常服务器的路由规则可能导致路径匹配失败;若多服务器部署在不同子域,需为Cookie设置统一根域(如.yourdomain.com),确保跨子域可读取。


内容的提问来源于stack exchange,提问作者João Pedro Sousa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:54:56