1

我们正在将我们的 Web 应用程序从 ASP.NET 1.1 迁移到 ASP.NET 3.5。我们的应用程序通过 DNS 循环在多个服务器上运行,因此每个浏览器请求都可能最终在不同的服务器上。我们的 web.config 中确实有一个来防止验证错误。

但是,我们的计划是一次迁移一台服务器。现在看起来就像用户在 1.1 上加载页面时的样子。服务器,然后页面在回发时在 3.5 服务器上结束,视图状态验证失败。

我在网上找不到任何关于这个问题的东西——我只是猜测视图状态验证在 1.1 之间不兼容。和 3.5,即 1.1 生成的视图状态不会在 3.5 上验证,即使使用相同的 machineKey,反之亦然。

谁能证实这个怀疑?

谢谢

4

3 回答 3

1

使用类似帖子中提到的粘性会话。这将使用户在同一台​​机器上保持一段时间。

我认为允许单个用户在单个会话中访问框架的三个不同版本是不明智的。

于 2008-12-17T17:33:02.213 回答
0

您是否为 3.5 主机运行 IIS7?我在 IIS7 上运行 1.1 应用程序时遇到了很多问题。让 1.1 应用程序在 IIS7 上正常运行已经很困难了,更不用说尝试跨多个框架版本进行网络花园了。我遇到的最大问题是 ViewState 的加密或管理方式与以前版本的 IIS 不同。如果您尝试在 1.1 上设置 weg-garden,则会收到各种 ViewState 加密错误。您不能在 IIS7 上的 1.1 应用程序上设置网络花园(具有多个工作线程)。至少从我的经验来看。

于 2008-12-17T17:40:26.927 回答
0

我相信 1.1 和 2.0 对视图状态使用不同的默认加密算法。1.1 的默认值为 3DES,我相信 2.0 的默认值为 SHA1(尽管目前我似乎找不到支持这一点的文档)。尝试在新服务器上将机器密钥中的验证设置为 3DES,看看是否能解决问题。

<machineKey validation="3DES">
于 2008-12-17T17:40:42.353 回答