2

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

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

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

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

4

2 回答 2

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 属性

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

于 2012-06-22T11:33:03.977 回答
1

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

于 2012-06-22T11:33:13.183 回答