ASP.NET WebService中使用ASP.NET_SessionId的问题说明
程序员文章站
2024-03-06 18:27:20
今天在帮助同事解决对webservice进行 web references 调用问题:当调用webservice第一个方法method1发现服务端set-cookie: a...
今天在帮助同事解决对webservice进行 web references 调用问题:当调用webservice第一个方法method1发现服务端set-cookie: asp.net_sessionid=*****保存了asp.net的会话状态。接着当我再调用webservice的第二个方法method2时发现无法正确返回服务器端处理结果
也就是说webservices进行http post 的时无法正常响应服务端。感觉问题就出在cookie上(method1调用时服务端进行了set-cookie),但是就是始终解决不了问题。接着测试webservices浏览器端访问,一切都是正常的。只怪自己对webservice了解甚少,导致明明知道问题所在,就是无法解决问题。。
技术问题往往都是这样,当你越想解决它,它就越难快速的被你搞定。于是乎下班回家后冲凉、吃饱后继续尝试解决问题。我突然想到了long long ago 俺写过一篇文章,就是http抓包的文章,文章地址在这里:http://www.cnblogs.com/ryanding/archive/2011/01/17/1936392.html。主要是通过httpwebrequest、httpwebresponse 这两大神器来解决问题。后来想想这样做肯定可以搞定这个问题。但是还是稍微过于繁琐了。记得httpwebrequest 有一个cookiecontainer对象,可以解决cookie问题。于是乎就拼命的在webservcie的web references实例化对象上找相关属性。最终完美的被我解决了,代码如下:
consoleapplication1.webreference.yourwebservicename proxy= new consoleapplication1.webreference.yourwebservicename();
system.net.cookiecontainer cookies = new system.net.cookiecontainer();
proxy.cookiecontainer = cookies;
代码执行完以上信息在执行method1,因为这玩意才开始 set-cookie...
接着在执行method2一切都ok了。
这说明了 proxy.cookiecontainer存储了客户端的 asp.net_sessionid。这样以后每次通过webservice 方法调用时,都会将asp.net_sessionid传递到服务器端。
注:该webservices 是客户提供的,我们不能随便修改它的代码。
我想应该也有不少人碰见了类似的问题。本文权当方便后来人吧。
也就是说webservices进行http post 的时无法正常响应服务端。感觉问题就出在cookie上(method1调用时服务端进行了set-cookie),但是就是始终解决不了问题。接着测试webservices浏览器端访问,一切都是正常的。只怪自己对webservice了解甚少,导致明明知道问题所在,就是无法解决问题。。
技术问题往往都是这样,当你越想解决它,它就越难快速的被你搞定。于是乎下班回家后冲凉、吃饱后继续尝试解决问题。我突然想到了long long ago 俺写过一篇文章,就是http抓包的文章,文章地址在这里:http://www.cnblogs.com/ryanding/archive/2011/01/17/1936392.html。主要是通过httpwebrequest、httpwebresponse 这两大神器来解决问题。后来想想这样做肯定可以搞定这个问题。但是还是稍微过于繁琐了。记得httpwebrequest 有一个cookiecontainer对象,可以解决cookie问题。于是乎就拼命的在webservcie的web references实例化对象上找相关属性。最终完美的被我解决了,代码如下:
复制代码 代码如下:
consoleapplication1.webreference.yourwebservicename proxy= new consoleapplication1.webreference.yourwebservicename();
system.net.cookiecontainer cookies = new system.net.cookiecontainer();
proxy.cookiecontainer = cookies;
代码执行完以上信息在执行method1,因为这玩意才开始 set-cookie...
接着在执行method2一切都ok了。
这说明了 proxy.cookiecontainer存储了客户端的 asp.net_sessionid。这样以后每次通过webservice 方法调用时,都会将asp.net_sessionid传递到服务器端。
注:该webservices 是客户提供的,我们不能随便修改它的代码。
我想应该也有不少人碰见了类似的问题。本文权当方便后来人吧。
推荐阅读
-
ASP.NET WebService中使用ASP.NET_SessionId的问题说明
-
使用asp.net的pageDataSource中时索引问题解决方法
-
使用asp.net的pageDataSource中时索引问题解决方法
-
ASP.NET中TextBox使用Ajax控件显示日期不全的问题解决方法
-
使用asp.net MVC4中的Bundle遇到的问题及解决办法分享
-
使用asp.net MVC4中的Bundle遇到的问题及解决办法分享
-
asp.net中mvc使用ajax提交参数的匹配问题解决探讨
-
asp.net core 3.0中使用swagger的方法与问题
-
详细说明在vue2中使用axios解决http请求出现的问题(详细教程)
-
asp.net中mvc使用ajax提交参数的匹配问题解决探讨