ASP.NET WebService中使用ASP.NET_SessionId的問題說明

來源:互聯網
上載者:User

今天在協助同事解決對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 是客戶提供的,我們不能隨便修改它的代碼。
我想應該也有不少人碰見了類似的問題。本文權當方便後來人吧。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.