我正在使用HttpWebRequest登錄到網站並獲取會話cookie。我的應用程序刮擦了某些頁面,最終變爲空閒狀態,導致會話死機。保持會話活着C#
什麼是防止這種情況的好方法 - 只是好奇 - Web瀏覽器如何做到這一點?
我正在使用HttpWebRequest登錄到網站並獲取會話cookie。我的應用程序刮擦了某些頁面,最終變爲空閒狀態,導致會話死機。保持會話活着C#
什麼是防止這種情況的好方法 - 只是好奇 - Web瀏覽器如何做到這一點?
瀏覽器本身並不這樣做。如果Web App本身支持它,它們只會這樣做。例如,可能會有一些JavaScript每隔30秒左右發出一次AJAX請求,向服務器發送「keep-session-alive」類型的請求,然後該請求會更新其狀態信息以反映「最近的活動「現在是,並因此阻止會話超時。
然而,在上面的例子中,「客戶」,即HTML/JavaScript的瀏覽器,而「服務器」將被寫入在一起,因此,這種類型的功能,內置的。
如果你不負責服務器端的應用程序,因此不能自己建立「保持活動」功能,你最好的辦法是要麼物理地訪問網頁,瀏覽所有的JavaScript以尋找可能「保持活力」代碼(在他們可能使用的任何js框架中查找SetTimeout,SetInterval或相關方法)。當然也有可能沒有任何這樣的功能,在這種情況下,最好的辦法是簡單地「刷新」你在網頁(即再次發送相同的請求)
你不能阻止它,除非你通過以特定的固定時間間隔(比如每10-15分鐘)請求特定網站資源來保持會話活動。
同意,只是不斷調查網站。 – 2009-12-10 15:42:23
客戶端: 呼叫服務器的每x分鐘,只要確定它不太經常。最好是去剛下會話超時值:
(Javscript/jQuery的)
$(function() {
setInterval(function() { $.post("/KeepSessionAlive.ashx", null, null); }, 60000);
});
服務器端: 在服務器上的KeepSessionAlive文件,你寫的東西到會話,fe:
context.Session["KeepSessionAlive"] = DateTime.Now;
瀏覽器中的會話*也*超時。你是什麼意思:「瀏覽器怎麼做?」? – 2009-12-10 15:33:22
這可能是有用的:http://www.codeproject.com/KB/session/Session_Defibrillator.aspx – wprl 2010-02-01 21:32:56