win2003+sp1下调用webservice遇到的奇怪问题
开发环境为win2003+sp1 .net 2003 c#
我现在调用一个java写的webservice。webservice里面有一个login()方法和sendinfo(SessionId,content)方法,
login返回一个SessionId,在sendinfo的参数里填入SessionId和要发送的内容content。
首先,在win2000下先login,再sendinfo完全正常。
但是我换到正式发布的环境下在win2003+sp1下login()可以,并且返回一个可用的SessionId,再sendiofo就异常退出,而且捕获不到是什么异常。
经过试验发现在win2003+sp1下使用webservice里的方法Beginlogin()返回一个IAsyncResult类型的值handle,
再使用webservice里的方法Endlogin(handle)得到SessionId,这时再sendinfo也完全正常。不知道为什么
在win2003+sp1要用Beginlogin和Endlogin这种异步登陆的方式才能正常用sendinfo发送信息。
而且在win2000下或不加sp1的win2003下直接login,sendinfo都完全正常,相反用了Beginlogin和Endlogin失败。
咨询webservice的提供方,回复我可能login得到的SessionId过期,但是我再win2003+sp1断点跟踪到login,然后取
得SessionId,再通过ie访问这个webservice,点击里面的sendinfo,在页面上输入刚拿到的SessionId,发送成功!
证明SessionId没有过期。
不知道win2003+sp1下是否有什么网络限制会对直接login再send产生影响。
请诸位指点一下。我需要直接在win2003+sp1下使用login和sendinfo方法
附代码
同步登陆和发送
MyWS.SSer SS = new SendWSInfo.MyWS.SSer();//引用的webservice
string sessionid = SS.login(UsrID,PW);
string content = "test";
string result = SS.send(sessionid,content)
异步登陆和发送
MyWS.SSer SS = new SendWSInfo.MyWS.SSer();//引用的webservic
IAsyncResult handle = SS.Beginlogin(UsrID,PW,null,null);
string sessionid = SS.Endlogin(handle);
string content = "test";
string result = SS.send(sessionid,content);