3

我们已经将我们的 web 应用程序从 .net runtime 2 (v 3.5) 迁移到 .net runtime 4 (v 4.5),我有一个部署问题。我们的会话状态服务器是一个“状态服务器”,并在单独的服务器上从框架 2 运行 aspnetsession。当我们将应用程序池部署到 .net 4 并将其升级到我们的一个测试网络服务器时,似乎会话过期或以某种方式被丢弃,因为我们被重定向到应用程序的登录页面。

有什么方法可以部署我们的新版本应用程序,而我们的用户不会在此过程中丢失会话?由在 .net 2 中运行的应用程序池创建的 sessioncookie 是否与 .net 4 不兼容?我在重大更改白皮书中看不到任何关于此的内容

编辑:网站的应用程序路径是相同的,对于我们的应用程序的这个版本没有改变,我们做了“无停机”部署(用户不会注意到新版本,也不会退出)5-6年约 50 个版本。

Edit2:相反的情况并非如此:在运行 .net framework 4 的应用程序中创建会话,然后降级到 .net 2 不会中断会话。然而,事实恰恰相反。

在此先感谢您的任何指点

4

2 回答 2

1

在与 MS pro 支持人员和与 asp.net 团队交谈的社区中的一位重要成员交谈后,应用程序池版本之间的会话不兼容的事实是设计使然。微软也不认为它是一个错误或重大变化,尽管我很想不同意。总之 - 不幸的是,我的发现是正确的,我们未来的版本需要一些额外的操作工作才能尽可能顺利。

于 2013-09-12T16:25:02.413 回答
1

如何对场进行负载平衡以创建“粘性会话”以将现有会话粘贴到运行 .net 2.0 的机器上,并将任何新会话粘贴到运行 .net 4.0 的机器上。

当然,这取决于您的项目是否能够承受在生产中同时运行 2 个不同版本的项目......因为我猜不仅.net 版本发生了变化,而且项目中的底层代码也发生了变化。例如,人们从项目的 2 个不同版本修改数据库中的数据是否会产生影响。

因此,将其视为运行您自己项目的多个版本的问题,而不是运行 .net 版本的会话。从这个角度看它可能会使解决问题变得更容易......或者更困难:-),具体取决于您的项目。

于 2013-09-12T16:33:21.020 回答