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

ASP.NET WebMethod存Session逗号分隔值时myValues为null如何解决?

问题原因
  • 每次调用直接覆盖Session值,未做拼接逻辑:原代码每次执行时直接将当前Widget+','赋值给Session变量,没有读取已存储的历史值做拼接,最终只会保留最后一次传入的参数值,无法得到多参数拼接的效果。
  • 方法无返回值导致前端无法拿到结果:当前方法声明为void类型,没有将myValues的值返回给前端Ajax请求,前端接收不到返回内容自然显示为空。
  • Session丢失导致空值:如果前端Ajax请求未携带Session Cookie(比如跨域请求未配置凭证传递),每次请求都会生成全新的Session,历史存储的值完全丢失,此时用as string转换未赋值的Session变量就会返回null。
修复方案

首先调整后端代码,追加拼接逻辑、增加返回值、补充空值判断:

[WebMethod(EnableSession = true)]
public static string GetDahboardWidgetRefresh(int Widget)
{
    // 读取原有Session值,为空则默认赋值为空字符串
    string historyValue = HttpContext.Current.Session["WidgetRefId"] as string ?? string.Empty;
    // 拼接新传入的参数
    string currentValue = historyValue + Widget + ",";
    // 回写Session
    HttpContext.Current.Session["WidgetRefId"] = currentValue;
    // 返回拼接后的结果给前端
    return currentValue;
}

额外注意事项:

  • 若为跨域Ajax请求,需要在前端请求配置中添加withCredentials: true,保证每次请求携带Session Cookie,避免Session丢失。
  • 注意Session键名的大小写不要写错,同时如果应用配置的是InProc模式的Session,应用池重启后已存储的Session值会被清空。

内容的提问来源于stack exchange,提问作者ASHISH ANAND

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:27:05