0

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

我在本地运行该网站,同时使用 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();
    }
4

1 回答 1

0

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

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

于 2009-07-31T11:41:18.790 回答