2

我想将用逗号(1,2,3,4 ...)分隔的数字序列输入存储到会话对象中

我的代码是:

string items = string.Empty;

protected void Button1_Click(object sender, EventArgs e)
    {
                    fillitem(TextBox1.Text);
                    showsession();
    }

      void fillitem(string par1)
        {
            if (Session["itemvar"] != null)
            {
                items = Session["itemvar"].ToString();
                Session["itemvar"] = null;
            }

            items += par1 + ",";
            Session["itemvar"] = items;
        }     


 void showsession()
    {
            string itempp = string.Empty;
            if (Session["itemvar"] != null)
            {
                itempp = Session["itemvar"].ToString();
                int indexOfkoma = itempp.LastIndexOf(",", StringComparison.OrdinalIgnoreCase);

                if (indexOfkoma != -1)
                {
                    itempp = itempp.Substring(0, indexOfkoma);

                }
            }
            Label1.Text = itempp;

    }

该代码在我的本地运行良好。但是当我在服务器上发布时,会话对象返回奇怪的结果,如下所示:

Button1_Click 事件 1 结果:Session["itemvar"] 返回:1

Button1_Click 事件 2 结果:Session["itemvar"] 返回:2 ----> 正确的结果应该返回:1,2

Button1_Click 事件 3 结果:Session["itemvar"] 返回:1,3 ----> 正确的结果应该返回:1,2,3

Button1_Click 事件 4 结果:Session["itemvar"] 返回:2,4 ----> 正确的结果应该返回:1,2,3,4

任何想法,这些奇怪行为的原因是什么?

4

1 回答 1

0

您看到的行为可能是由于在 Web 场配置中使用进程内会话状态(IIS 上的默认值)引起的。

在这种情况下,您的请求实际上将由不同的应用程序服务器(每个都有自己的会话)提供服务。

配置进程外会话状态以解决 Web 场方案中的此问题。

于 2012-10-18T05:45:55.130 回答