会话对象返回奇怪的结果

时间:2012-10-18 05:13:34

标签: asp.net c#-4.0 iis-7 session-variables

我想存储一个用逗号分隔的数字序列输入(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结果: 会话[“itemvar”]返回:1

Button1_Click事件2结果: 会话[“itemvar”]返回:2 ---->应该返回正确的结果:1,2

Button1_Click事件3结果: 会话[“itemvar”]返回:1,3 ---->正确的结果应该返回:1,2,3

Button1_Click事件4结果: 会话[“itemvar”]返回:2,4 ---->正确的结果应该返回:1,2,3,4

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

1 个答案:

答案 0 :(得分:0)

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

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

Configure Out-of-Process Session State在Web场方案中解决此问题。