我正在使用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();
}
}
提前感谢。
答案 0 :(得分:0)
您使用的是哪个缓存? 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
(请求缓存...持续到请求结束)