我有一个带有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();
}
答案 0 :(得分:0)
是否可能是machine.config已将服务器会话状态设置为Off并且您的web.config中没有覆盖?
或者它可能是URL所在的“区域”.IE对于Intranet,外部站点的行为不同。将其添加到受信任的站点列表中,然后重试。