收藏
回答

wx.request调用 ASP.NET WebApi session丢失问题

问题模块
API和组件

webapi的session已开启.

如题,在浏览器测试接口的时候完全没问题,当放到wx.request中请求就会丢失session.

我写了一个测试方法.


分别对应两个 Controller,一个存值,一个读取.




在浏览器中分别依次访问两个方法.在第二个方法中可以正常读取到test.


但放在wx.request中的时候,session中key为空.请问wx.request中的请求和ajax的请求是不是不相同?

最后一次编辑于  2017-02-22  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

3 个回答

  • 林超
    林超
    2017-02-22

    wx.request 是通过客户端接口发起的HTTPS请求,不是浏览器的ajax

    所以没有session  需要开发者自己记录和标记登录状态

    2017-02-22
    赞同
    回复
  • 六号💤
    六号💤
    2017-02-23

    感谢楼上两位朋友的解答,昨天发出问题之前的解决方案就是@唐涛的这种方式,这样每次请求都需要多增加一个sessionID的参数,感觉繁琐.所以来问问是什么原因导致的,看是不是小程序的bug,看来目前的只能先用传sessionid的方式解决了..谢谢两位.

    2017-02-23
    赞同
    回复
  • 唐涛
    唐涛
    2017-02-23

    微信小程序没有保持session id的,我昨天也遇到这个问题,解决办法我感觉有两种

    1、用openid,服务端改动有些大

    2、小程序在第一次请求的时候,服务端返回这个函数的json把session返回,小程序端存入缓存,以后每次请求都构造http头,把session传入过去,这样服务端改动代码小,

    php的是content-type': 'application/x-www-form-urlencoded', 'Cookie': 'PHPSESSID=' + session_id

    java服务端是content-type': 'application/x-www-form-urlencoded', 'Cookie': 'JSESSIONID=' + session_id

    .net很久没写了,记不住了,你可以在服务端随便找个函数把所有的http header输出查看

    小程序端最好封装一个请求函数,以后所有的请求都调用这个函数即可,具体的例子可以参考百度到的

    http://blog.csdn.net/mad_geek/article/details/53148267

    另外就是小程序由于wx.Request是异步的,所以第一次请求的时候可以在起始页onload里面进行请求

    2017-02-23
    赞同
    回复