我维护的其中一个网站在很大程度上依赖于使用ViewState
(这不是我的代码)。但是,在某些ViewState
超额增加的网页上,Safari会抛出"Validation of viewstate MAC failed"
错误。
这似乎只发生在Safari中。 Firefox,IE和Opera都在同一场景中成功加载。
答案 0 :(得分:4)
虽然我是Channel 9解决方案的第二名,但也要注意,在某些托管环境中,Safari不被视为高级浏览器。您可能需要将其添加到应用程序的browscap中,以便使用一些ASP.Net功能。
这是我们对使用ASP Menu控件的客户端网站感到头疼的根本原因。
答案 1 :(得分:3)
我的第一个停靠点是浏览页面上的元素并查看哪些控件:
失败了,这是免责声明 - 我从来没有在面向网站的网站上使用过这个解决方案 - 但在过去,我想在有限的受众应用程序中消除大量的ViewStates,我已将ViewState存储在会话。
它对我有用,因为对内存的打击对于用户数量并不重要,但是如果你正在运行一个相当受欢迎的网站,我不会推荐这种方法。但是,如果Session解决方案适用于Safari,您可以始终检测用户代理并适当地捏造。
答案 2 :(得分:2)
我一直在对此进行一些研究,虽然我不完全确定它的原因我认为是因为Safari没有返回完整的结果集(因此裁剪它)。
我一直在与另一位开发人员讨论,并在Channel 9上发现了以下帖子,它建议使用SQL State服务来存储viewstate,避免回发问题以及页面大小。
这看起来是最好的解决方案吗?