ViewState仅在Safari中无效

时间:2008-08-04 12:38:21

标签: c# .net safari viewstate

我维护的其中一个网站在很大程度上依赖于使用ViewState(这不是我的代码)。但是,在某些ViewState超额增加的网页上,Safari会抛出"Validation of viewstate MAC failed"错误。

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

3 个答案:

答案 0 :(得分:4)

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

这是我们对使用ASP Menu控件的客户端网站感到头疼的根本原因。

答案 1 :(得分:3)

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

  1. 当我关闭ViewState时仍然可以使用
  2. 可以移出页面并进入AJAX调用,以便在需要时加载
  3. 失败了,这是免责声明 - 我从来没有在面向网站的网站上使用过这个解决方案 - 但在过去,我想在有限的受众应用程序中消除大量的ViewStates,我已将ViewState存储在会话。

    它对我有用,因为对内存的打击对于用户数量并不重要,但是如果你正在运行一个相当受欢迎的网站,我不会推荐这种方法。但是,如果Session解决方案适用于Safari,您可以始终检测用户代理并适当地捏造。

答案 2 :(得分:2)

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

我一直在与另一位开发人员讨论,并在Channel 9上发现了以下帖子,它建议使用SQL State服务来存储viewstate,避免回发问题以及页面大小。

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

这看起来是最好的解决方案吗?