2009-07-31 6 views
0

J'ai une page Web avec 1 étiquette et 2 boutons. Un bouton permet à une publication de générer une séquence aléatoire de nombres, de l'enregistrer dans l'objet Application et d'appeler une méthode qui récupère la liste de l'objet Application et l'écrit dans l'étiquette. L'autre obutton appelle simplement la méthode qui obtient les nombres et les écrit sur l'étiquette. Au chargement de la page, j'appelle la même fonction qui obtient les valeurs et les écrit sur l'étiquette.L'objet Application ASP.NET perd des valeurs

Je cours le site Web localement, avec 3 navigateurs (IE, FF, Chrome) en même temps, et cela fonctionne comme prévu. Chaque navigateur affiche la même valeur, et ils changent si l'un d'entre eux appelle le Randomize.

Sur le serveur de production, j'obtiens des valeurs différentes, parfois je n'ai aucune valeur sur IE ou FF.

Nous n'avons pas d'équilibreur de charge.

Code, il semble laid, mais j'ai désespérément essayé toutes les combinaisons juste pour le faire fonctionner:

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

Si vous l'ouvrez dans Browser1 voir les valeurs l'ouvrir dans Browser2 ne pas voir les valeurs et l'ouvrir à nouveau dans Browser1 vous verrez les valeurs? – Stilgar

Répondre

0

pourrait-il être que le machine.config a mis l'état de session du serveur Off et vous n'avez pas de priorité dans votre web.config?

Alternativement, il pourrait s'agir de la «zone» dans laquelle se trouve l'URL. IE agit différemment pour Intranet, Sites externes. Ajoutez-le à la liste des sites de confiance et réessayez.

+0

Les options de session ne doivent pas affecter l'objet Application. – Stilgar

Questions connexes