1

我这里有一个典型的要求。

我有一个用 asp.net 4.0 开发的 Web 应用程序。在此应用程序中,我想向其中一个 Web 表单添加一个按钮,它将执行以下任务:

  1. 它应该清除服务器端缓存,我的意思是它应该清除托管应用程序的同一 IIS 服务器的缓存。

现在,我知道我们可以通过删除此处存在的文件来手动实现它,

%systemroot%\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files
%systemroot%\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files

我们需要在删除临时文件之前关闭 IIS,然后再重新启动它。为了避免对缓存文件的任何依赖。

但我想知道如何在 web 表单的按钮单击事件中实现它。请帮我解决这个要求。

4

3 回答 3

2

我目前在我的应用程序中使用以下内容:

    public static void ClearAspNetCache(HttpContext context) {
        foreach (DictionaryEntry entry in context.Cache) {
            context.Cache.Remove((string)entry.Key);
        }
    }

这是一个可能非常有用的源参考:

http://aspadvice.com/blogs/ssmith/archive/2005/11/14/Extending-the-ASPNET-Cache-Object-Cache-Clear.aspx#33197

于 2012-07-30T11:08:59.257 回答
1

如果您想从缓存中删除所有项目,请尝试此操作:

IDictionaryEnumerator enumerator = HttpContext.Current.Cache.GetEnumerator();    
while (enumerator.MoveNext())
{    
    HttpContext.Current.Cache.Remove(enumerator.Key);    
}
于 2012-07-30T11:11:42.110 回答
1

从 HttpContext.Current.Cache 中删除项目不会清除您的 IIS 缓存。它是服务器端缓存(由 ASP.NET 运行时管理),而不是 Web 服务器缓存。

看看这个链接。 http://blogs.msdn.com/b/dougste/archive/2008/08/11/clearing-out-temporary-asp-net-files.aspx

于 2012-07-30T11:40:43.343 回答