基于Web下的WebService之间的会话保存
原理:WebService的会话保存仅能使用一个唯一的cookie来标示!
也就是server.CookieContainer=new System.Net.CookieContainer();
这样写,在window程序中没有问题,只要是全局性的。但是在web下边就不行了。因为用户每次提交都是一个新的网页,cookie不一定能被保存。
基于Web下的WebService之间的会话保存
在Page_Load里面:
if(!IsPostBack)//在网页载入时注册一个cookie
{
PLPTest2.GetService.MyService server=new PLPTest2.GetService.MyService();
CookieContainer c=new System.Net.CookieContainer();
server.CookieContainer=c;//不注册cookie,WebSerive就不能识别一个用户,即使WebSerice的WebMethod(true)
Session["cookie"]= c;//保存到Session中。不保存的cookie,怕是不能及时获得这个对象,还怕用户禁用cookie。
}
在应用时:
CookieContainer c=(CookieContainer)Session["cookie"];//获得保存的cookie,保证唯一。WebService就是通过这个唯一的cookie来确定会话的。
PLPTest2.GetService.MyService server=new PLPTest2.GetService.MyService();
server.CookieContainer=c;//赋值
server.YourName("Test");//执行WebService
Session["cookie"]= c;//把执行之后的cookie再次记录下来。很重要!
也就是server.CookieContainer=new System.Net.CookieContainer();
这样写,在window程序中没有问题,只要是全局性的。但是在web下边就不行了。因为用户每次提交都是一个新的网页,cookie不一定能被保存。
基于Web下的WebService之间的会话保存
在Page_Load里面:
if(!IsPostBack)//在网页载入时注册一个cookie
{
PLPTest2.GetService.MyService server=new PLPTest2.GetService.MyService();
CookieContainer c=new System.Net.CookieContainer();
server.CookieContainer=c;//不注册cookie,WebSerive就不能识别一个用户,即使WebSerice的WebMethod(true)
Session["cookie"]= c;//保存到Session中。不保存的cookie,怕是不能及时获得这个对象,还怕用户禁用cookie。
}
在应用时:
CookieContainer c=(CookieContainer)Session["cookie"];//获得保存的cookie,保证唯一。WebService就是通过这个唯一的cookie来确定会话的。
PLPTest2.GetService.MyService server=new PLPTest2.GetService.MyService();
server.CookieContainer=c;//赋值
server.YourName("Test");//执行WebService
Session["cookie"]= c;//把执行之后的cookie再次记录下来。很重要!

浙公网安备 33010602011771号