2016-03-24 32 views
1

我正在使用windows.web.http我打電話web請求如下圖所示存儲會話公衆在C#

namespace service 
{ 
public class getserinfo 
    { 
     public async Task<bool> call() 
     { 
      var client = new HttpClient(); 
      var uri = new Uri(www.example.com/db/login); 
      var response = await client.PostAsync(uri); 
      var session = await response.Content.ReadAsStringAsync(); //here it returns session which I need in classes in another for accessing different paths 
     } 
    } 
} 

如何存放session IDpublic可以在任何類訪問。

+2

這可能會幫助你。請參考這個[session](http://stackoverflow.com/questions/621549/how-to-access-session-variables-from-any-class-in-asp-net) – Invader

回答

0

您在項目的根目錄中創建一個靜態類,可以存儲要從任何位置訪問的數據。

0

會話大多存儲在cookie中(並非總是)。你可以做的是創建一個全局的CookieContainer變量。首先對網站進行調用,然後將cookie存儲在CookieContainer中,然後每個請求重新使用相同的CookieContainer。以下代碼僅僅是爲了給你headstart,並不是完整的代碼,但希望你能明白。您將需要使用HttpWebRequest。別擔心HttpWebResponse也有Async的方法。

public void WebsiteCall(string url) 
    { 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
     request.CookieContainer = container; 

     HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
     container = request.CookieContainer; 
    } 

現在每一次,你會撥打電話到您的網站,那麼的CookieContainer將被重新使用,如果會話存儲在該網站的cookie,那麼你將能夠成功地保持整個你的每一個相同的會話呼叫。