2015-06-27 117 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">