【问题标题】:ViewState invalid only in SafariViewState 仅在 Safari 中无效
【发布时间】:2010-09-05 07:07:52
【问题描述】:

我维护的其中一个网站严重依赖ViewState 的使用(这不是我的代码)。但是,在 ViewState 过于臃肿的某些页面上,Safari 会抛出 "Validation of viewstate MAC failed" 错误。

这似乎只发生在 Safari 中。 Firefox、IE 和 Opera 都在同一个场景下成功加载。

【问题讨论】:

    标签: c# .net safari viewstate


    【解决方案1】:

    虽然我支持 Channel 9 解决方案,但也请注意,在某些托管环境中,Safari 不被视为高级浏览器。您可能需要将它添加到应用程序的浏览器中才能使用一些 ASP.Net 功能。

    这是我们为使用 ASP 菜单控件的客户网站感到头疼的根本原因。

    【讨论】:

      【解决方案2】:

      我的第一站是浏览页面上的元素并查看哪些控件:

      1. 当我关闭 ViewState 时仍然可以工作
      2. 可以移出页面并进入 AJAX 调用,以便在需要时加载

      如果做不到这一点,这里是免责声明 - 我从未在面向 Web 的网站上使用过此解决方案 - 但在过去,我想在有限受众应用程序中消除大量 ViewState,我将 ViewState 存储在会话。

      它对我有用,因为对内存的影响对于用户数量来说并不重要,但如果您运行的是一个相当受欢迎的网站,我不推荐这种方法。但是,如果 Session 解决方案适用于 Safari,您始终可以检测到用户代理并适当地进行调整。

      【讨论】:

        【解决方案3】:

        我一直在对此进行一些研究,虽然我不完全确定其原因,但我认为这是因为 Safari 没有返回完整的结果集(因此对其进行了裁剪)。

        我一直在与另一位开发人员进行讨论,并在 Channel 9 上找到了以下帖子,该帖子建议使用 SQL 状态服务来存储视图状态,以避免回发问题和页面大小。

        http://channel9.msdn.com/forums/TechOff/250549-ASPNET-ViewState-flawed-architecture/?CommentID=270477#263702

        这似乎是最好的解决方案吗?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-11-01
          • 2012-09-06
          • 2010-10-06
          • 1970-01-01
          • 2011-05-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多