2010-08-10 60 views
0

在我的頁面加載我已經得到了會話[「名稱」]如何在同一頁面維護會話

當我使用此代碼保存:

Stream stream = null; 
request = (HttpWebRequest)WebRequest.Create(url); 
response = (HttpWebResponse)request.GetResponse(); 

當談到此行:

response = (HttpWebResponse)request.GetResponse(); 

它再次移動到頁面加載,那時會話爲空。怎麼樣???如何在同一頁面中維護會話。爲什麼它在這行遇到時被清除...

+1

什麼你想達到什麼目的?並請格式化您的代碼... – 2010-08-10 12:54:12

回答

1

會話不會持續使用HttpWebResponse的原因是因爲默認情況下,HttpWebResponse不會爲您處理Cookie。 ASP.NET使用cookie來識別哪個會話屬於用戶。

謝天謝地,有一個名爲CookieContainer的助手類可以幫助你解決這個問題。創建一個CookieContainer並將其連接到您的網絡請求 - 在後續請求中,您需要在其中附加的cookie容器,或餅乾請求再次堅持會話:

CookieContainer cookieJar = new CookieContainer(); 
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com"); 
request.CookieContainer = cookieJar; 

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

// on a second request, you can use the cookieJar container to pass the session cookie. 
+0

如果您允許無Cookie會話(在您的Web配置文件中Cookieless =「true」),那麼您可以通過在URL中包含會話cookie來模擬無Cookie會話。默認情況下,我認爲HttpWebRequest會指出它支持cookies,這意味着ASP.NET不會嘗試爲您啓動無Cookie會話。 – 2010-08-10 13:10:51

0

您正在嘗試從您的應用程序發出Web請求,並且它不是您的會話,而是您的應用程序會話。

數據(名稱鍵和它的值)存儲在您的會話中,但是當您調用WebRequest.GetResponse()方法時,您的應用程序將啓動它自己的全新會話。