繁体   English   中英

有没有办法在不丢失会话状态的情况下修改 ASP.NET 应用程序中的 App_Code?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM