我发现this article解释了如何使用缓存项目到期来为ASP.NET应用程序创建预定作业,而不使用任何调度程序或Windows服务。 对我来说真的很有趣!
在文章中,作者使用HttpContext.Current.Cache
添加项目。因此,当项目在缓存中到期时,可以进行治疗..
但在他的文章中,他正在向服务器发出“虚假”请求,要求HttpContext
访问缓存,并在之前的到期时再次添加项目。
我尝试使用System.Web.Hosting.HostingEnvironment
来访问没有任何HttpContext的Cache(所以不需要制作'DummyRequest'),它似乎有效。
有什么我不了解或不知道这个缓存? HttpContext
和HostingEnvironment
缓存是不同的吗? 我认为这是同一件事,intellisense描述了像'应用缓存'这样的两个差异。
答案 0 :(得分:3)
它们是相同的并且都调用HttpRuntime.Cache
- 来自源代码:
public static Cache System.Web.Hosting.HostingEnvironment.Cache
{
get
{
return HttpRuntime.Cache;
}
}
和
public Cache System.Web.HttpContext.Cache
{
get
{
return HttpRuntime.Cache;
}
}
这也是MSDN上的状态:
<强> HostingEnvironment.Cache 强>
获取当前应用程序的Cache实例
命名空间:System.Web.Hosting
汇编:System.Web(在system.web.dll中)
参考:http://msdn.microsoft.com/en-us/library/system.web.hosting.hostingenvironment.cache(VS.85).aspx
HttpContext.Cache Property
获取当前应用程序域的Cache对象
命名空间:System.Web
汇编:System.Web(在System.Web.dll中)
参考:http://msdn.microsoft.com/en-us/library/system.web.httpcontext.cache.aspx
答案 1 :(得分:1)
两者都指向缓存的相同实例。在某些情况下,您无法获得HttpContext.Current
。然后,您始终可以通过System.Web.Hosting.HostingEnvironment.Cache
作为后备来获取缓存。