【发布时间】:2010-06-21 19:45:34
【问题描述】:
我有一些代码(客户端)试图缓存来自 Web 服务的响应。我将响应保存在从 System.Web.HttpRuntime 获取的 System.Web.Caching.Cache 对象中。
我打了一次电话,然后我再打一次,控制台输出显示它是从缓存中加载的。但我从来没有得到控制台输出。我在调试器中运行它并在 Get 和 Cache 处放置一个断点作为条目,并且缓存中的键与我传递给 get 的键相同,但它仍然返回 null?????
基本上代码是这样的。
public object MakeRequest(string uri)
{
(break point)object retList = Querier.Cache.Get(uri);
if (retList != null)
{
Console.WriteLine("Loaded from Cache");
}
retList = Querier.MakeRequest(uri);
Querier.Chache[uri] = retList;
return retList;
}
查询器是一个对象,它发出我的 http 请求并反序列化该对象然后返回它。
有人知道为什么缓存返回 null 而不是存储在其中的对象吗?这让我不知所措,因为调试器显示内部密钥和我传入的密钥都是相同的字符串(尽管不是在同一个地方形成) 提前致谢
【问题讨论】:
-
Querier.Chache[uri] 而不是 Cache 我猜是错字?! Querier.MakeRequest(uri) 是否有机会返回 null?