【问题标题】:ASP.NET Viewstate validation - ASP.NET 1.1 vs. ASP.NET 3.5ASP.NET 视图状态验证 - ASP.NET 1.1 与 ASP.NET 3.5
【发布时间】:2010-09-27 09:10:47
【问题描述】:

我们正在将我们的 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,反之亦然。

谁能证实这个怀疑?

谢谢

【问题讨论】:

    标签: asp.net validation viewstate


    【解决方案1】:

    使用this similar post 中提到的粘性会话。这将使用户在同一台​​机器上保持一段时间。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        <machineKey validation="3DES">
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-19
          相关资源
          最近更新 更多