这种情况发生在多个版本的Safari中,包括5.x
它将发布_ EVENTTARGET =& _EVENTARGUMENT =但__VIEWSTATE =
没有这只发生在Safari中,并且只发生在我们网站的一个页面上。
我无法重现它 - 我们花了几天时间试图。
此页面上的viewstate不是太大了。
谢谢!
答案 0 :(得分:1)
我们遇到了很多版本3的viewstate问题.Safari为可以在任何一个字段中显示的数据量设置了限制,这些字段会被发布回服务器。
我们解决问题的方法是将viewstate设置为跨越多个输入控件。
您可以在web.config的system.web / pages部分执行此操作。例如:
<system.web>
<pages maxPageSTateFieldLength="500" />
</system.web>
您可能需要使用该值。我不记得各种版本的safari有什么限制。有几个人说过1k,但如果我从测试中记得正确,有些版本只传递了大约500字节。
另一种选择是存储viewstate服务器端。您可以看到this here的示例。您还应该阅读有关潜在问题的this blog。我们确实尝试过这条路径并最终放弃了它,因为它与我们正在进行的其他一些加密事件相冲突。
答案 1 :(得分:0)
(与之前的回答不同)
总结到目前为止我们所知道的事情:
几个问题: 首先,这仅限于特定客户或一组人吗?我问,因为它可能是“唯一的”野生动物园很重要。
第二,StrangeLoop设备是否具有某种类型的超时值或流量限制,其中令牌缓存被垃圾收集?
我可以设想一个特定客户端进入此页面并暂停一段时间(10分钟......更长时间?)的场景。在此期间,要么满足超时值,要么强制您使用异常环路设备为此特定客户端抛出视图状态的流量。然后当他们继续并回发时,设备没有视图状态注入html流。
在我看来,为了让你根本没有任何视图状态,设备本身一定不能注入它。我能想到的唯一原因是,如果令牌值不是由safari发送的(不太可能因为它必须非常小),或者设备无法在其缓存表中找到匹配项。
设备是否有任何类型的日志记录或指标,您可以看到它是否与传入的令牌值不匹配?
类似的想法是,如果这个页面有一些ajax正在进行。设备是否为每个请求发回不同的令牌,或者单个客户端浏览器是否为整个浏览会话保留令牌?如果它发送一个不同的令牌..那么它可能是safari没有用新的令牌值正确地更新自己的客户端。虽然这条路应该很容易复制。