2009-07-31 6 views
0

1 개의 레이블과 2 개의 단추가있는 웹 페이지가 있습니다. 하나의 버튼은 숫자의 무작위 스퀘어를 생성하고 Application 객체에 저장하며 Application 객체에서 목록을 가져 와서 레이블에 쓰는 메소드를 호출합니다. 다른 obutton은 숫자를 가져 와서 레이블에 쓰는 메소드를 호출합니다. 페이지를로드 할 때 동일한 함수를 호출하여 값을 가져 와서 레이블에 씁니다.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(); 
    } 
+0

브라우저 1에서 열면 Browser2에서 값을 열고 값이 표시되지 않고 Browser1에서 다시 열면 값이 표시됩니까? – Stilgar

답변

0

그것은 가능성이 Machine.config가 해제하고 당신에게 서버 세션 상태를 설정했다고 할 수 web.config에 재정의가 없습니까?

또는 URL이있는 '영역'일 수도 있습니다. IE는 인트라넷, 외부 사이트에서 다르게 작동합니다. 신뢰할 수있는 사이트 목록에 추가하고 다시 시도하십시오.

+0

세션 옵션은 Application 개체에 영향을 미치지 않아야합니다. – Stilgar