有朋友问: 我开发的 asp.net 站点在本地运行时 很正常,可是发布到了生产环境之后,不能正常运行,经常出错,检查原因时发现是因为 Session和Cookie 经常无缘无故丢失。
从表面上看这是个比较奇怪的问题,难道生产环境和本地环境有什么不同吗?
答案是: 确实有点不一样。
asp.net 中的 cookie 和 session 都是要加密的,而加密时要用到MachineKey, 如果你的asp.net 的web.config 中没有加上 MachineKey,当然你发布到生产环境之后就会遇到上面的问题,加上 MachineKey 配置项就不会出错了。
MachineKey的配置如下:
<system.web>
<machineKey validationKey="A40C4D37C52C1ACCC5C7B9224274DDB3E5C4D1618B4509C7" decryptionKey="6053A3FE59AC5E83163D09D6E36CFC8FFEBE81E67EE55122" validation="SHA1" />
</system.web>
1 2 3 4 5 6 7 | 在ASP.NET这样的Web应用中,Session是用来保存用户状态的常用手段,不过由于服务器内存空间是有限的,所以Session过期时间设置是很有必要的。在ASP.NET中如何设置Session的过期时间呢,很简单,修改web.config配置。
具体修改方法如下,在web.config中进行如下配置
<system.web>
<sessionState mode= "InProc" timeout= "30" />
</system.web>
在这里指的是Session过期时间为30分钟。也就是说30分钟后如果当前用户没有操作,那么Session就会自动过期了。
|