ASP.NET Application对象丢失了值

时间:2009-07-31 11:14:19

标签: controls asp.net-3.5 state

我有一个带有1个标签和2个按钮的网页。一个按钮执行回发生成数字的随机序列,将其保存到Application对象,并调用从Application对象获取列表并将其写入标签的方法。另一个obutton只调用获取数字的方法并将它们写入标签。在页面加载时,我调用相同的函数来获取值并将它们写入标签。

我在本地运行网站,同时使用3个浏览器(IE,FF,Chrome),它按预期工作。每个浏览器显示相同的值,如果其中一个调用Randomize,它们会更改。

在生产服务器上,我得到不同的值,有时我在IE或FF上没有任何价值。

我们没有负载均衡器。

代码,它看起来很难看,但我拼命尝试了每一个组合才能让它运转起来:

    protected void Page_Load(object sender, EventArgs e)
    {
        show();
    }
    private List<int> AllNums
    {
        get
        {
            List<int> list = new List<int>();
            try
            {
                list = (List<int>)Application["Nums"];
            }
            catch
            {
                list = new List<int>();
            }
            if (list == null)
                list = new List<int>();
            return list;

        }
    }
    protected void btnRandomize_Click(object sender, EventArgs e)
    {
        Random r = new Random();
        int i = r.Next(5, 15);
        List<int> list = new List<int>();
        for (int k = 0; k < i; k++)
            list.Add(r.Next(0, 100));
        Application.Lock();
        Application["Nums"] = list;
        Application.UnLock();
        show();
    }

    private void show()
    {
        StringBuilder sb = new StringBuilder();
        foreach (int o in AllNums)
            sb.AppendLine(o.ToString());
        lblSession.Text = sb.ToString();
    }

1 个答案:

答案 0 :(得分:0)

是否可能是machine.config已将服务器会话状态设置为Off并且您的web.config中没有覆盖?

或者它可能是URL所在的“区域”.IE对于Intranet,外部站点的行为不同。将其添加到受信任的站点列表中,然后重试。