从命令行或Powershell脚本中删除ARR缓存中的所有缓存对象

时间:2012-07-26 17:24:31

标签: caching iis-7 proxy

文档介绍了如何使用IIS管理器的“应用程序请求路由缓存”小程序删除所有缓存的对象(详细信息请参见http://learn.iis.net/page.aspx/576/delete-cached-objects/)。如何通过命令行或powershell脚本完成此操作?

在我的情况下,我确实有一个本地磁盘缓存,删除该文件夹中的文件不会导致重新计算文件。还需要什么?

2 个答案:

答案 0 :(得分:1)

以下C#代码示例是一个简单的控制台程序,可以删除缓存的所有内容,或删除您希望从缓存中清除的特定URL。

为了编译它,您需要引用我在GAC中找到的 Microsoft.Web.Administration DLL(尽管我也相信它也是Windows SDK的一部分)

using Microsoft.Web.Administration;
using System;

namespace IISCacheManager
{
  class Program
  {
    static void Main(string[] args)
    {
      if (args.Length != 1)
      {
        Console.WriteLine("Incorrect Usage: Specify the URL that you want to flush the cache for. To delete everything, specify 'ALL'.");
        Environment.Exit(1);
      }

      var url = args[0] == "ALL" ? string.Empty : args[0];

      var m = new ServerManager();
      var x = m.GetApplicationHostConfiguration().GetSection("system.webServer/diskCache");
      var method = x.Methods["FlushUrl"].CreateInstance();
      method.Input.SetAttributeValue("url", url);
      method.Execute();
      Console.WriteLine("Item flushed successfully.");
    }
  }
}

希望这有帮助!

答案 1 :(得分:0)

我能想到的最佳选择是从提升的命令提示符调用iisreset.exe,然后删除缓存文件夹的内容,例如:

iisreset
cd d:\cache
FOR /R %d IN (.) DO rmdir /s /q "%d"

这有点难看 - 当然必须有更优雅的东西。