失去观点

时间:2010-09-30 13:37:04

标签: asp.net viewstate

我在viewstate中存储了一些属性,因此我可以轻松地在Ajax请求中使用它们。我的属性代码如下所示:

public Language Language
{
    get { return (Language)ViewState["controls_window_Language"]; }
    set { ViewState["controls_window_Language"] = value; }
}

然而,我的客户报告了一些错误,当我跟踪它时,这是因为语言为空。它不会每次都发生;它似乎是完全随机的,我无法重现错误。我也在viewstate中存储其他属性,我在Language之前使用该属性,所以我没有丢失所有viewstate。

最合乎逻辑的原因是语言被覆盖了,但我写这篇文章的唯一时间是首次加载页面时。

丢失我的viewstate属性可能是什么原因?

5 个答案:

答案 0 :(得分:1)

我不确定这是否是问题,但在浏览器中使用后退/前进导航通常会导致意外结果,尤其是在使用大量异步调用的页面上。

编辑:澄清我的想法......

我建议这可能是用户看到错误但你无法重现问题的原因。这是排除故障的一步,我经常忘记...

答案 1 :(得分:0)

您说您在首次加载页面时写入了视图状态。

您如何知道这是第一次加载页面,您的应用中是否有可以通过该设置的导航路线。

作为快速修复,您可以尝试检查该值是否为null,然后返回默认值。

答案 2 :(得分:0)

尝试查看global.asax中的Session_OnError事件与ViewState问题之间是否存在连接

答案 3 :(得分:0)

答案 4 :(得分:0)

“丢失”ViewState内容的一个可能原因是输出缓存。我面临同样的问题,原因是缓存(当我禁用它时,问题不会发生)。