为何每次的SessionID 都不同?

fanciex 2006-07-11 12:49:57
我在Form上去调用web service 。但每次的session id 都不同。我想让他返回同一个id,即 如何让web service 知道是同一个客户端?
不知还有哪没设定好? 我的代码如下:

[WebMethod(EnableSession = true)]
public string GetSessionID()
{
return Session.SessionID;
}
---------

public partial class Form1 : Form
{
CookieContainer cookies;
localhost.Service webs;
public Form1()
{
InitializeComponent();
webs = new WindowsApplication1.localhost.Service();
cookies = new CookieContainer();
}

private void button1_Click(object sender, EventArgs e)
{
webs.CookieContainer = cookies;
label1.Text = webs.GetSessionID();
}
}
...全文
947 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
awuzi 2007-01-29
  • 打赏
  • 举报
回复
net_Lover:
Session["x"]="x";随便存个东西
return Session.SessionID;

经典!!
chenxdb 2006-07-26
  • 打赏
  • 举报
回复
Session依賴COOKIE存在,所以需要在你的FORM里把COOKIE保存起來。
方法: WebService.CookieContainer = new System.Net.CookieContainer
huhe 2006-07-26
  • 打赏
  • 举报
回复
你把
webs.CookieContainer = cookies;
这一句移到Form1的构造函数中试试。
孟子E章 2006-07-21
  • 打赏
  • 举报
回复
Session["x"]="x";随便存个东西
return Session.SessionID;
forever9918 2006-07-21
  • 打赏
  • 举报
回复
用身份验证吧
iwebsms 2006-07-18
  • 打赏
  • 举报
回复
路过



============================================================
国内资深.Net虚拟主机供应商大海网络(www.dahai.net)隆重推出3G空间酬宾
所谓3G指(支持ASP.NET2.0空间1G+SQL Server数据库1G+企业邮局1G)
产品可以先定购,开通时间可以随意选择
此产品限前100位用户注册,售价300元
详情请联系QQ:695338或致电0510-88882858
活动开始日期:2006-7-18
============================================================
fanciex 2006-07-17
  • 打赏
  • 举报
回复
Form上去调用web service 。但每次的session id 都不同

————原因是session 依赖cokie,你的form中没有接收cokie。
————解决办法:在窗体中接受cokie!
-------------------
代码中已写: webs.CookieContainer = cookies;
fanciex 2006-07-17
  • 打赏
  • 举报
回复
我发现 Session.SessionID 是产生一个新的session id 而不是 取得目前的 session id。为何会这样?那如何取得目前的session id.
superdbs 2006-07-13
  • 打赏
  • 举报
回复
Form上去调用web service 。但每次的session id 都不同

————原因是session 依赖cokie,你的form中没有接收cokie。
————解决办法:在窗体中接受cokie!
fanciex 2006-07-12
  • 打赏
  • 举报
回复
如果要靠SessionID来识别不同的客户端,有2个方法:

1. 使用SOAP头来传递SessionID.
2. 使用客户端的SessionID,每次将请求的SessionID绑定到请求的头部。
----

能否具体点?有没人做过类似的东东?
fanciex 2006-07-12
  • 打赏
  • 举报
回复
YAOHE(吆喝) ( ) 信誉:100
public class MyHeader : SoapHeader {
public string MyValue;//即为你的SessionID,用来作客户验证
}

--------
你的意思是要我自己产生一个myHeader来代替sessionID的功能吗?
但我觉得不是好方法。 因为既然系统提供了产生sessionID的功能为何不用?而且我还要用session 来保存其他对象,而且还要管理session的生存期。 你这种方式感觉不行。
YAOHE 2006-07-12
  • 打赏
  • 举报
回复
public MyHeader myHeader;
YAOHE 2006-07-12
  • 打赏
  • 举报
回复
public class MyHeader : SoapHeader {
public string MyValue;//即为你的SessionID,用来作客户验证
}
YAOHE 2006-07-12
  • 打赏
  • 举报
回复
using System.Web.Services.Protocols;

[WebMethod]
[SoapHeader("myHeader", Direction=SoapHeaderDirection.InOut)]
mmens 2006-07-12
  • 打赏
  • 举报
回复
是这样:
可以在web service中生成sessionID,然后通过soap head 传递给客户端。
客户端每次都将接收到的sessionID再通过soap head传递给web service。

这样web service通过检查sessionID,就可以判断客户端了。
mmens 2006-07-11
  • 打赏
  • 举报
回复
客户端异步调用WebService的时候,每次调用都会被看作不同的会话。

如果要靠SessionID来识别不同的客户端,有2个方法:

1. 使用SOAP头来传递SessionID.
2. 使用客户端的SessionID,每次将请求的SessionID绑定到请求的头部。
jiezhi 2006-07-11
  • 打赏
  • 举报
回复
根据ip,甚至网卡地址

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧