今天在幫助同事解決對WebService進行 Web References 調(diào)用問題:當調(diào)用webservice第一個方法Method1發(fā)現(xiàn)服務(wù)端Set-Cookie: ASP.NET_SessionId=*****保存了ASP.NET的會話狀態(tài)。接著當我再調(diào)用webservice的第二個方法Method2時發(fā)現(xiàn)無法正確返回服務(wù)器端處理結(jié)果
也就是說webservices進行http post 的時無法正常響應(yīng)服務(wù)端。感覺問題就出在cookie上(Method1調(diào)用時服務(wù)端進行了Set-Cookie),但是就是始終解決不了問題。接著測試webservices瀏覽器端訪問,一切都是正常的。只怪自己對WebService了解甚少,導(dǎo)致明明知道問題所在,就是無法解決問題。。
技術(shù)問題往往都是這樣,當你越想解決它,它就越難快速的被你搞定。于是乎下班回家后沖涼、吃飽后繼續(xù)嘗試解決問題。我突然想到了long long ago 俺寫過一篇文章,就是http抓包的文章,文章地址在這里:http://www.cnblogs.com/ryanding/archive/2011/01/17/1936392.html。主要是通過HttpWebRequest、HttpWebResponse 這兩大神器來解決問題。后來想想這樣做肯定可以搞定這個問題。但是還是稍微過于繁瑣了。記得HttpWebRequest 有一個CookieContainer對象,可以解決cookie問題。于是乎就拼命的在WebServcie的Web References實例化對象上找相關(guān)屬性。最終完美的被我解決了,代碼如下:
復(fù)制代碼 代碼如下:
ConsoleApplication1.WebReference.YourWebServiceName proxy= new ConsoleApplication1.WebReference.YourWebServiceName(); System.Net.CookieContainer Cookies = new System.Net.CookieContainer(); proxy.CookieContainer = Cookies;