2016-09-20 39 views
1

我的網站上有一個按鈕,您必須先登錄。點擊後,它從ssrs報告服務器檢索報告並將其顯示在同一頁面上。 我記下了它在請求cookie中使用的會話ID。ASP.NET_Sessionid正在更新

Picture of session ID

現在,當我清空緩存並再次運行報告它得到以下錯誤「ASP.NET會話已過期」,但它得到了會話ID的響應的cookie。

現在是這個問題,當我再次點擊按鈕。該站點能夠從ssrs報告服務器檢索報告,但它使用響應cookie的會話ID。

Pic of new session ID

任何人有,爲什麼這種行爲正在發生的事情的想法?其他線程沒有給我一個徹底的解釋。

回答

1

你的描述聽起來完全正常。

會話ID本質上是指向虛擬內存空間的指針,該虛擬內存空間包含可供該用戶訪問的變量表。該表不會永久保存 - 如果ASP.NET框架在特定時間內(例如20或30分鐘,取決於配置)未看到會話標識,則將釋放內存空間並回收用於其他用途。如果此會話ID稍後顯示,它將不知道如何處理它,並會給你一個「會話已過期」的錯誤。

您看到的第一個會話ID可能是從以前的會話中遺留下來的。這是舊的,它的內存空間不見了,所以ASP.NET給你提供了錯誤。

對於沒有有效會話的所有請求,會自動發出第二個會話ID。 ASP.NET將自動創建一個內存空間和一個隨機密鑰,並將其發送回您所看到的響應cookie。現在,您的瀏覽器擁有最新的會話cookie,請求將正常工作,正如您再次單擊該按鈕時所看到的。