我想存储一个用逗号分隔的数字序列输入(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
任何想法,这些奇怪行为的原因是什么?
答案 0 :(得分:0)
您看到的行为可能是由在Web场配置中使用进程内会话状态(IIS上的默认值)引起的。
在这种情况下,您的请求实际上将由不同的应用程序服务器(每个服务器都有自己的会话)提供服务。
Configure Out-of-Process Session State在Web场方案中解决此问题。