【问题标题】:losing my objects at cache在缓存中丢失我的对象
【发布时间】:2010-12-12 12:56:00
【问题描述】:

我正在使用 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();
        }
    }

提前致谢。

【问题讨论】:

  • 您可能需要发布一些代码才能得到答案。你怎么把它放在缓存中?您正在使用哪些依赖项/时间选项?
  • 我需要解释一下,我尝试添加数据集副本或 ds 本身但没有成功。该示例正在复制数据集并将新对象放入缓存中。
  • 我仍然遇到这个问题,我刚刚意识到当我将数据集放入内存时,它会丢失奇怪的列名。
  • 您是否尝试过缓存业务对象?
  • 我认为不会有任何问题,那么我要做的是缓存数据集。

标签: c# asp.net mysql caching


【解决方案1】:

您使用的是哪个缓存? 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
(请求缓存...一直持续到请求结束)

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 2011-05-02
    • 1970-01-01
    相关资源
    最近更新 更多