文档描述了如何使用 IIS 管理器的应用程序请求路由缓存小程序删除所有缓存的对象(详细信息:http ://learn.iis.net/page.aspx/576/delete-cached-objects/ )。这如何从命令行或 powershell 脚本完成?
就我而言,我确实有一个本地磁盘缓存,删除该文件夹中的文件不会导致重新计算文件。还需要什么?
以下 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.");
}
}
}
希望这可以帮助!
我能想到的最佳选择是从提升的命令提示符调用 iisreset.exe,然后删除缓存文件夹的内容,例如:
iisreset
cd d:\cache
FOR /R %d IN (.) DO rmdir /s /q "%d"
它有点难看——肯定有更优雅的东西。