删除命令行或PowerShell脚本在ARR缓存所有缓存对象(Delete All Cached O

2019-09-20 06:36发布

文档介绍了如何(这里的细节:使用IIS管理器的应用程序请求路由缓存的小程序,删除所有缓存对象http://learn.iis.net/page.aspx/576/delete-cached-objects/ )。 怎么可能这样被命令行或PowerShell脚本做了什么?

在我来说,我有一个本地的磁盘缓存并删除该文件夹中的文件不会导致重新计算的文件。 还有什么要求?

Answer 1:

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

为了使这种编译,你将需要引用Microsoft.Web.Administration DLL这是我在GAC发现的(虽然我也相信它是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.");
    }
  }
}

希望这可以帮助!



Answer 2:

我可以想出最好的办法是打电话iisreset.exe命令从提升的命令提示符,然后删除缓存文件夹的内容,例如:

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

这是一个有点难看 - 当然这里面一定有更优雅。



文章来源: Delete All Cached Objects in ARR Cache from Command Line or Powershell Script