【问题标题】:Is System.Web.Hosting.HostingEnvironment.Cache equals to HttpContext.Current.Cache?System.Web.Hosting.HostingEnvironment.Cache 是否等于 HttpContext.Current.Cache?
【发布时间】:2012-06-22 11:27:37
【问题描述】:

我找到this article,他解释了如何在不使用任何调度程序或 Windows 服务的情况下使用缓存项过期来为 ASP.NET 应用程序制定计划作业。 这对我来说真的很有趣!

在文章中,作者使用HttpContext.Current.Cache添加一个项目。因此,当缓存中的项目过期时,可以进行处理..

但在他的文章中,他从服务器向自己发出“错误”请求,以访问HttpContext 以访问缓存并在前一个过期时再次添加项目。 我尝试使用System.Web.Hosting.HostingEnvironment在没有任何 HttpContext 的情况下访问 Cache(因此无需创建“DummyRequest”),它似乎可以正常工作。

关于这个缓存有什么我不理解或不知道的吗? HttpContextHostingEnvironment 缓存有区别吗?我认为这是一回事,intellisense 将两者描述为“应用程序缓存”,没有区别。 p>

【问题讨论】:

    标签: c# asp.net caching


    【解决方案1】:

    它们是相同的,都调用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 属性

    获取当前应用程序域的 Cache 对象。
    命名空间:System.Web
    程序集:System.Web(在 System.Web.dll 中)
    参考:http://msdn.microsoft.com/en-us/library/system.web.httpcontext.cache.aspx

    【讨论】:

    • 谢谢。其实在文章中,小伙子是在使用httpcontext entry来避免web应用的Idle time。
    【解决方案2】:

    两者都指向同一个缓存实例。在某些情况下,您无法获得HttpContext.Current。然后,您始终可以通过System.Web.Hosting.HostingEnvironment.Cache 获取缓存作为备用。

    【讨论】:

      猜你喜欢
      • 2011-02-15
      • 2021-05-02
      • 2011-10-22
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多