ViewState仅在Safari中无效
时间:2020-03-05 18:37:32 来源:igfitidea点击:
我维护的站点之一在很大程度上依赖于ViewState
的使用(这不是我的代码)。但是,在某些页面上,ViewState
过分膨胀,Safari会抛出""验证Viewstate MAC失败"错误。
这似乎仅在Safari中发生。 Firefox,IE和Opera均在同一情况下成功加载。
解决方案
回答
我一直在对此进行一些研究,尽管我不太确定是什么原因,但我认为这是因为Safari无法返回完整的结果集(因此无法进行裁剪)。
我一直在与另一位开发人员讨论,并在Channel 9上找到了以下帖子,该帖子建议利用SQL State服务存储视图状态,以避免回发问题以及页面大小。
http://channel9.msdn.com/forums/TechOff/250549-ASPNET-ViewState-flawed-architecture/?CommentID=270477#263702
这似乎是最好的解决方案?
回答
我的第一个调用端口将是浏览页面上的元素,并查看哪些控件:
- 当我关闭ViewState时仍然可以使用
- 可以移出页面并进入AJAX调用以在需要时加载
失败了,这是免责声明,我从未在面向Web的站点上使用此解决方案,但是在过去,我想消除有限听众应用程序中的大量ViewState,因此我已将ViewState存储在Session中。
之所以对我有用,是因为内存访问量对用户数量而言并不重要,但是如果我们运行的网站非常受欢迎,则我不建议我们使用这种方法。但是,如果会话解决方案适用于Safari,则我们始终可以检测到用户代理并适当地进行软操作。
回答
当我第二次使用Channel 9解决方案时,还应注意,在某些托管环境中,Safari不被视为高级浏览器。我们可能需要将其添加到应用程序的browscap中,以利用某些ASP.Net功能。
这是我们对于使用ASP菜单控件的客户站点有些头疼的根本原因。