文档介绍了如何使用IIS管理器的“应用程序请求路由缓存”小程序删除所有缓存的对象(详细信息请参见http://learn.iis.net/page.aspx/576/delete-cached-objects/)。如何通过命令行或powershell脚本完成此操作?
在我的情况下,我确实有一个本地磁盘缓存,删除该文件夹中的文件不会导致重新计算文件。还需要什么?
答案 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"
这有点难看 - 当然必须有更优雅的东西。