我们正在将我们的Web应用程序从ASP.NET 1.1迁移到ASP.NET 3.5。我们的应用程序通过DNS循环在多个服务器上运行,因此每个浏览器请求可能最终都在不同的服务器上。我们的web.config中有一个用于防止验证错误。
但是,我们的计划是一次迁移一台服务器。现在看起来当用户在1.1上加载页面时。服务器,然后页面在回发时最终在3.5服务器上,视图状态验证失败。
我无法在网上找到有关此问题的任何内容 - 我只是猜测视图状态验证在1.1之间不兼容。和3.5,即1.1生成的视图状态即使使用相同的machineKey也不会在3.5上验证,反之亦然。
有人能证实这种怀疑吗?
由于
答案 0 :(得分:1)
使用this similar post中提到的粘性会话。这将使用户在一段时间内保持在同一台机器上。
我认为允许单个用户在一个会话中点击三个不同版本的框架是不明智的。
答案 1 :(得分:0)
您是否为3.5主机运行IIS7?在IIS7上运行1.1应用程序的ViewState遇到了很多问题。让一个1.1应用程序在IIS7上正常运行是非常困难的,更不用说尝试跨多个框架版本的web-garden了。我遇到的最大问题是ViewState的加密或管理方式与IIS的previos版本不同。如果您尝试在1.1上设置weg-garden,则会出现各种ViewState加密错误。您无法在IIS7上的1.1应用程序上设置Web园(具有多个工作线程)。至少从我的经验来看。
答案 2 :(得分:0)
我相信1.1和2.0对viewstate使用不同的默认加密算法。 1.1的默认值是3DES,我相信2.0它是SHA1(虽然我现在似乎无法找到备份文档)。尝试将机器密钥中的验证设置为新服务器上的3DES,看看是否能解决问题。
<machineKey validation="3DES">