2009-11-03 6 views
1

J'utilise IIS7 et C# et mysql. et j'ai mis des objets dans le système de cache asp.net avec des mots-clés SQL. il a une logique très simple. Mettez le jeu de données sélectionné dans le cache avec le mot clé sql donné.perdre mes objets au cache

Voici le problème. Quand j'appelle mon site avec www.abc.com cela fonctionne normalement. En surfant sur abc.com après le deuxième clic, le premier ensemble de données rempli devient un ensemble de données vide et mon site commence à afficher des listes vides.

J'ai essayé de changer des clés pour certains mots statiques et de copier des ensembles de données, puis les mettre en cache mais sans succès jusqu'à présent.

J'espère que j'ai bien expliqué. http://beta.mpazari.com est l'endroit si vous aimez voir et dans les listes déroulantes boîtes rouges est les listes devraient avoir été remplis de données.

est ici la ma fonction de remplissage

public void Fill(ref DataSet ds, string sql, DateTime? cacheTime, string key) 
    { 
     if (key == null) key = sql; 
     if (cacheTime == null) cacheTime = DateTime.Now.AddMinutes(generalCacheExpiarionTimeInMinutes); 
     if (cache[key] != null) { ds = (DataSet)cache[key]; return; } 
     MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["motorConnectionString"].ConnectionString); 
     try 
     { 
      conn.Open(); 
      MySqlDataAdapter myda = new MySqlDataAdapter(sql, conn); 
      if (ds == null) ds = new DataSet(); 

      ds.Clear(); 
      myda.Fill(ds); 
      cache.Insert(key, ds.Copy(), null, cacheTime.Value, System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.NotRemovable,null); 
     } 
     finally 
     { 
      conn.Close(); 
     } 
    } 

merci à l'avance.

+0

Vous devrez peut-être poster un code pour obtenir une réponse à cette question. Comment le mettez-vous dans le cache? Quelles dépendances/options de synchronisation utilisez-vous? –

+0

Je dois expliquer que j'ai essayé d'ajouter une copie de dataset ou ds elle-même mais sans succès. Cet exemple copie un ensemble de données et place un nouvel objet dans le cache. –

+0

J'ai toujours ce problème et je viens de réaliser que lorsque je mets un jeu de données en mémoire, il perd des noms de colonnes. –

Répondre

0

Quel cache utilisez-vous? ASP.NET a plusieurs endroits que vous pouvez mettre en cache ... Je suppose que vous pourriez mettre cela dans le cache qui est éliminé à la fin de chaque demande.

Voir ces ...
http://msdn.microsoft.com/en-us/library/system.web.httpcontext.cache.aspx
(Contexte Cache ... persiste pour la vie du domaine de l'application)

http://msdn.microsoft.com/en-us/library/system.web.httpcontext.items.aspx
(Request Cache ... persiste jusqu'à la fin de la demande)

Questions connexes