首页 新闻 会员 周边 捐助

ASP.NET MVC session获取不到

0
悬赏园豆:5 [已解决问题] 解决于 2016-09-27 15:20

今天碰到一奇怪的事情,居然取不到session,场景是客户端异步的取session值,控制前面的数据进度条,结果居然取不到,是我理解错了嘛,不能这样用?

 public ActionResult ShowData()
{

    setSession(10);
    ......

}

void setSession(string value)
{
    HttpContext.Session["proccescount"]  =value;
}


public JsonResult GetSessionData()
{
      return Json(new{data=HttpContext.Session["proccescount"]},JsonRequestBehavior.AllowGet)  
}
beggar_的主页 beggar_ | 初学一级 | 园豆:10
提问于:2016-09-21 15:10
< >
分享
最佳答案
0

那么问题来了,你客户端异步取Session的值之前存取了session值吗?又或者你换成同步的试试呢!

收获园豆:5
大楚打码人 | 老鸟四级 |园豆:4313 | 2016-09-21 15:15

页面端 ajax 每隔一秒钟会去取GetSessionData()的值,一直都会返回null,

跟踪调试,在ShowData()里面看session有值,但到了GetSessionData()就为NULL

beggar_ | 园豆:10 (初学一级) | 2016-09-21 15:19
其他回答(3)
0

请问你客户端怎么取服务器端Session的?

~扎克伯格 | 园豆:1923 (小虾三级) | 2016-09-21 15:22

ajax 调用GetSessionData()方法吖

支持(0) 反对(0) beggar_ | 园豆:10 (初学一级) | 2016-09-21 15:23

@beggar_: 你跟踪到后台看下Json(new{data=HttpContext.Session["proccescount"]},JsonRequestBehavior.AllowGet) 这段返回的结果中session有没有值

支持(0) 反对(0) ~扎克伯格 | 园豆:1923 (小虾三级) | 2016-09-21 15:31

@beggar_: 你这里可能session没有存入到json中

支持(0) 反对(0) ~扎克伯格 | 园豆:1923 (小虾三级) | 2016-09-21 15:32

@IT民工-杰: 没有,一直是null,所以我才上来请教的

以前也把验证码放到session里面,点击异步更新,也能正常的取到session

支持(0) 反对(0) beggar_ | 园豆:10 (初学一级) | 2016-09-21 15:34

@beggar_: 你的showData()什么时候调用的?

支持(0) 反对(0) ~扎克伯格 | 园豆:1923 (小虾三级) | 2016-09-21 15:37

@IT民工-杰: 页面load就会获取数据

前端:

$(function(){
getShowData();
});

function getShowData(){
   //初始化进度    
   getprocces();
  $.ajax({url:"/adjust/ShowData"
      .........
    },
    success:function(result){
        ...............
    }
    )  
} 

function getprocces()
{
    $.post('/adjust/GetProcces',{r:new Date()},function(result){

    ..........

    })
}
//每隔1秒运行一次

setInterval("getprocces()", 1000);
支持(0) 反对(0) beggar_ | 园豆:10 (初学一级) | 2016-09-21 15:54

@beggar_: 刚在后台测试你的function,为什么我debug GetSessionData()时,里面session有值????

支持(0) 反对(0) ~扎克伯格 | 园豆:1923 (小虾三级) | 2016-09-21 15:55

@IT民工-杰: 不会吧。。。。我头疼着呢

支持(0) 反对(0) beggar_ | 园豆:10 (初学一级) | 2016-09-21 15:59

@beggar_:

支持(0) 反对(0) ~扎克伯格 | 园豆:1923 (小虾三级) | 2016-09-21 16:01

@beggar_: 你怎么调用GetSessionData()的?

支持(0) 反对(0) ~扎克伯格 | 园豆:1923 (小虾三级) | 2016-09-21 16:08

@IT民工-杰: 

我的还是null值

支持(0) 反对(0) beggar_ | 园豆:10 (初学一级) | 2016-09-21 16:09

@IT民工-杰: 再按就跳出去了,session是全局的,只要能进这个方法里面就应该能看得到值,你看看他都进了NULL的判断了,所以前面显示的永远都是在初始化,但是我上面的是数据的进度都已经跑完了

支持(0) 反对(0) beggar_ | 园豆:10 (初学一级) | 2016-09-21 16:13

@beggar_: $.post('/adjust/GetProcces',{r:new Date()},function(result){....} 是从这里进到后台GetProccesCount()这个方法里的吗?大兄弟 如果是这样的话,肯定没有session啊!因为你js里初始化时,还没有存session。

function getShowData(){
//初始化进度
getprocces();
$.ajax({url:"/adjust/ShowData"
.........
},
success:function(result){
...............
}
)
}

把getprocces()拿到ajax底下来

支持(0) 反对(0) ~扎克伯格 | 园豆:1923 (小虾三级) | 2016-09-21 16:23

@IT民工-杰: 我后面不是每秒执行一次嘛,第一次肯定为空,所以显示为初始化,但是我showdata()方法的数据都跑完了,都显示出来了,进度条还是初始化,这就不对了啊,我也跟踪了,数据跑完了进去,session还是null

支持(0) 反对(0) beggar_ | 园豆:10 (初学一级) | 2016-09-21 16:26

@beggar_: 不知道为什么了,要不你别每隔一秒执行一次,就先shouData 再Debug
GetseesionData()

支持(0) 反对(0) ~扎克伯格 | 园豆:1923 (小虾三级) | 2016-09-21 16:34

@beggar_: 其实这里没必要去是使用session ,用一个静态变量就可以。

支持(1) 反对(0) ~扎克伯格 | 园豆:1923 (小虾三级) | 2016-09-21 16:44

@IT民工-杰: 好吧,谢谢你,我再看看是不是我哪里错了

支持(0) 反对(0) beggar_ | 园豆:10 (初学一级) | 2016-09-21 16:45

@beggar_: You are Welcome!

支持(0) 反对(0) ~扎克伯格 | 园豆:1923 (小虾三级) | 2016-09-21 16:48
0

setSession(10);
不是应该是setSession("10")吗
这编译通不过吧

weizhangxiaohan | 园豆:95 (初学一级) | 2016-09-21 15:35

兄弟,重点不在这里

支持(0) 反对(0) beggar_ | 园豆:10 (初学一级) | 2016-09-21 15:38

@beggar_: 。。。

支持(0) 反对(0) weizhangxiaohan | 园豆:95 (初学一级) | 2016-09-21 15:39
0

静态变量可是大家都可以修改的啊!

荆棘人 | 园豆:410 (菜鸟二级) | 2016-09-21 19:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册