2015-06-27 109 views
0

我最近將網站從一臺主機移到另一臺主機。堅持.aspxauth會員cookie

在移動之前,表單身份驗證正常工作,並且用戶仍保持跨會話登錄。

移動後,用戶在看似隨機的時間後退出。

我檢查了網絡流量,並將.aspxauth cookie發送到服務器。

我在本地調試了這個問題,並再次發送了cookie,但它沒有出現在Request.Cookies中。谷歌告訴我,這是因爲如果ASP.NET無法解密.aspxauth cookie,那麼它會偷偷地將它從Request.Cookies集合中刪除。

感謝

回答

0

這似乎有點可笑的是ASP.NET無法解密一個cookie,它加密本身,而是這確實是發生了什麼。

要加密cookie,ASP.NET使用web.config或machine.config中的MachineKey設置。不幸的是,這個「AutoGenerate,IsolateApps」的默認設置,在這種情況下,ASP.NET在每次應用程序池recylces時都會生成一個新值,因此無法讀取現有cookie。

來解決這個問題的方法是指定在web.config中或machine.config中的關鍵,也有一些在線工具來生成一個(如http://www.developerfusion.com/tools/generatemachinekey/)和一些離線工具的更偏執(http://www.codeproject.com/Articles/16645/ASP-NET-machineKey-Generator

完成後應該看起來像這樣:

<machineKey 
validationKey="12365A372...etc...34897" 
decryptionKey="A76568...etc...1239847FD" 
validation="SHA1" decryption="AES">