2013-11-15 73 views
0

我有一個MVC4,.Net4.5應用程序,我們正在使用會話。由於沒有明顯的原因,MVC4不創建會話ID Cookie。以下是來自web.config的身份驗證和會話狀態設置MIssing Asp.Net會話ID Cookie

<authentication mode="Forms"> 
    <forms cookieless="UseCookies" loginUrl="~/Login" timeout="480"></forms> 
</authentication> 
<sessionState timeout="50" cookieless="UseCookies" mode="InProc"/> 

由於Forms Auth cookie存在,它不是cookies問題。

對此提出建議?

+0

您是否試圖通過JavaScript獲取會話cookie? – Andrei

回答

5

由於沒有明顯的原因,MVC4不創建會話ID Cookie。

也許你從來沒有任何存儲在服務器上的會話:

Session["foo"] = "bar"; 

只有這樣,你會看到會話cookie被設置爲這個特殊的請求的響應。這是設計。即使您在服務器上啓用ASP.NET會話,cookie也不會設置爲客戶端,直到將值存儲在會話中。

+0

然後,如何在沒有會話cookie的情況下使用表單身份驗證?對不起,我不確定。正如我的理解,它需要一個ASP.Net會話cookie –

+1

表單身份驗證和ASP.NET會話沒有任何共同之處。這是兩個完全不同的概念。例如,您可以完美地使用表單身份驗證並禁用ASP.NET會話(我的首選方案),或者在沒有表單身份驗證的情況下使用ASP.NET會話。許多人混淆了這兩種觀念。表單身份驗證提供了一種機制,可以使用Cookie跟蹤您網站上經過驗證的用戶ASP.NET會話爲您提供了一種機制,可以將.NET對象存儲在服務器上,以便在隨後的請求中進行檢索。 –

+0

在webforms中,有些情況下每個請求都改變了sessionid(如果你還沒有恢復會話中的某些東西),我相信更合適的方法 - 根本不設置cookie - 這正是MVC 4的作用: - ) –