我在viewstate中存储了一些属性,因此我可以轻松地在Ajax请求中使用它们。我的属性代码如下所示:
public Language Language
{
get { return (Language)ViewState["controls_window_Language"]; }
set { ViewState["controls_window_Language"] = value; }
}
然而,我的客户报告了一些错误,当我跟踪它时,这是因为语言为空。它不会每次都发生;它似乎是完全随机的,我无法重现错误。我也在viewstate中存储其他属性,我在Language之前使用该属性,所以我没有丢失所有viewstate。
最合乎逻辑的原因是语言被覆盖了,但我写这篇文章的唯一时间是首次加载页面时。
丢失我的viewstate属性可能是什么原因?
答案 0 :(得分:1)
我不确定这是否是问题,但在浏览器中使用后退/前进导航通常会导致意外结果,尤其是在使用大量异步调用的页面上。
编辑:澄清我的想法......
我建议这可能是用户看到错误但你无法重现问题的原因。这是排除故障的一步,我经常忘记...
答案 1 :(得分:0)
您说您在首次加载页面时写入了视图状态。
您如何知道这是第一次加载页面,您的应用中是否有可以通过该设置的导航路线。
作为快速修复,您可以尝试检查该值是否为null,然后返回默认值。
答案 2 :(得分:0)
尝试查看global.asax中的Session_OnError事件与ViewState问题之间是否存在连接
答案 3 :(得分:0)
答案 4 :(得分:0)
“丢失”ViewState内容的一个可能原因是输出缓存。我面临同样的问题,原因是缓存(当我禁用它时,问题不会发生)。