2013-04-17 56 views
0

我在其中,如果我在web配置使用如何保持session.sessionId在asp.net沒有URL

一個asp.net web項目的工作顯示的sessionId

然後加密的sessionId可見在URL中,但如果我將cookieless更改爲false,那麼加密的sessionID會從url中刪除,但我會在每個請求上收到一個新的session.sessionId

請幫助使加密的session.sessionID在url中不可見並且還應該有SINGLE session.sessionId在每個請求上。

+0

確保您的瀏覽器允許保存會話cookie –

+0

您的瀏覽器是否設置爲禁止cookie? – Netricity

回答

1

如果您使用基於cookie的會話管理ASP.NET正在使用一些優化,每次都會創建新會話,直到有實際會話數據存儲爲止。爲了避免這種情況,你可以把一個虛擬值到會話中可用Session_Start事件通過Global.asax

protected void Session_Start(object sender, EventArgs e) 
{ 
    Session["DUMMY_KEY"] = "DUMMY_VALUE"; 
} 

這樣的會話ID將保持不變,直到會話超時發生。

+0

我正在使用session.sessionId,每次發出新請求時都會給我一個新的ID。 和如果我使用cookieless爲true,然後我得到相同的SessionId,但它顯示加密數據在網站的URL – user1574078

+0

@ user1574078是的,這將發生,直到你把一些價值被存儲到會話。這是設計的,所以空的會話不必被序列化/反序列化和存儲。換句話說,ASP.NET假設如果你沒有把任何東西放進會話中,你不需要它。在將會話標識放入URL的情況下ASP.NET不這樣做,因爲它會使區分會話過期和沒有會話變得複雜。 – tpeczek

+0

哇。每天學些新東西。好戲!給予好評。 – granadaCoder