[英]Is there any way to modify App_Code in an ASP.NET application without losing session state?
我们有一个经常更新的 ASP Web 表单站点。
但是,每当我们修改存储在 App_Code 文件夹中的任何类时,都会导致应用程序池回收并丢失我们所有的会话状态,从而导致我们的用户被注销。
这意味着任何时候我们需要对应用程序代码进行更改,都需要在凌晨 2:00 左右进行,以最大程度地减少对用户的影响。
现在,由于我重视睡眠,我想知道这种行为是否有任何解决方法?
我尝试将应用程序切换为对会话状态使用 StateServer 模式。
只要正在更改的类当前未在使用中,这似乎就可以工作。 但是,如果该类正在使用中,则会导致每个身体会话丢失。
在这种情况下,对于频繁使用的网站,最佳实践是什么?
每次我们需要修复课程中的错误时,我是否都被谴责到深夜?
提前感谢您的任何答复...
除了 mode="StateServer" 之外,您还需要 sessionState 设置 cookieless="false"。
此外,您需要一个固定的机器密钥,因此回收不会生成新的机器密钥,而是使用相同的密钥。 如果生成了新密钥,则所有先前的 sessionId 都无法解密,因此与 sessionState 的链接将丢失。
检查https://technet.microsoft.com/en-us/library/cc755177(WS.10).aspx了解如何配置/生成机器密钥。
这是来自 msdn 的示例,因此不要在生产中使用它,而是生成您自己的密钥:
<machineKey
validationKey="32E35872597989D14CC1D5D9F5B1E94238D0EE32CF10AA2D2059533DF6035F4F"
decryptionKey="B179091DBB2389B996A526DE8BCD7ACFDBCAB04EF1D085481C61496F693DF5F4"
/>
最后,如果你想在机器级别设置相同的键,你需要在你的 Web.config 或你的 Machine.config 中这样的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.