System.Web.Hosting.HostingEnvironment.Cache是​​否等于HttpContext.Current.Cache?

时间:2012-06-22 11:27:37

标签: c# asp.net caching

我发现this article解释了如何使用缓存项目到期来为ASP.NET应用程序创建预定作业,而不使用任何调度程序或Windows服务。 对我来说真的很有趣!

在文章中,作者使用HttpContext.Current.Cache添加项目。因此,当项目在缓存中到期时,可以进行治疗..

但在他的文章中,他正在向服务器发出“虚假”请求,要求HttpContext访问缓存,并在之前的到期时再次添加项目。 我尝试使用System.Web.Hosting.HostingEnvironment来访问没有任何HttpContext的Cache(所以不需要制作'DummyRequest'),它似乎有效。

有什么我不了解或不知道这个缓存? HttpContextHostingEnvironment缓存是不同的吗? 我认为这是同一件事,intellisense描述了像'应用缓存'这样的两个差异。

2 个答案:

答案 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作为后备来获取缓存。