我正在使用IIS7,C#和mysql。然后我用sql关键字将一些对象放入asp.net缓存系统。它具有非常简单的逻辑。使用给定的sql关键字将所选数据集放入缓存中。

这是问题所在。当我使用www.abc.com呼叫我的网站时,它可以正常工作。在第二次单击后在abc.com中冲浪时,首先填充的数据集变为空数据集,而我的网站开始显示空列表。

我尝试将键更改为一些静态单词并复制数据集,然后将其缓存,但到目前为止没有成功。

我希望我能解释清楚。 http://beta.mpazari.com是您希望看到的地方,在红色框下拉列表中,列表应已填充数据。

这是我的填充功能

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();
        }
    }


提前致谢。

最佳答案

您正在使用哪个缓存? ASP.NET有几个可以缓存的地方...我怀疑您可能会将其放在每个请求结束时丢弃的缓存中。

看到这些...
http://msdn.microsoft.com/en-us/library/system.web.httpcontext.cache.aspx(上下文缓存...在应用程序域的生命周期中一直存在)

http://msdn.microsoft.com/en-us/library/system.web.httpcontext.items.aspx(请求缓存...持续到请求结束)

关于c# - 在高速缓存中丢失我的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1665520/

10-13 08:00
查看更多