2

文档描述了如何使用 IIS 管理器的应用程序请求路由缓存小程序删除所有缓存的对象(详细信息:http ://learn.iis.net/page.aspx/576/delete-cached-objects/ )。这如何从命令行或 powershell 脚本完成?

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

4

2 回答 2

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.");
    }
  }
}

希望这可以帮助!

于 2013-02-27T15:13:48.953 回答
0

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

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

它有点难看——肯定有更优雅的东西。

于 2012-07-26T23:33:58.820 回答