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 に答える