1つのラベルと2つのボタンを持つWebページがあります。 1つのボタンはポストバックを行い、数字のランダムな部分集合を生成し、それをApplicationオブジェクトに保存し、Applicationオブジェクトからリストを取得してラベルに書き込むメソッドを呼び出します。もう一方のボタンはメソッドを呼び出して番号を取得し、ラベルに書き出します。ページの読み込み時に、値を取得してラベルに書き込む同じ関数を呼び出します。ASP.NETアプリケーションオブジェクトの値が失われる
私は、3つのブラウザ(IE、FF、Chrome)を同時に使用して、ウェブサイトをローカルで実行し、期待どおりに動作します。各ブラウザは同じ値を表示し、いずれかがランダム化を呼び出すと変更されます。
プロダクションサーバーでは、異なる値を取得します。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();
}
これをBrowser1で開くと、値を参照してBrowser2で開き、値を表示せずに再びBrowser1で開くと、値が表示されますか? – Stilgar