【问题标题】:How do I programmatically delete ASP.NET Temp Internet Files如何以编程方式删除 ASP.NET 临时 Internet 文件
【发布时间】:2012-03-26 05:53:54
【问题描述】:

首先,我不是在问如何找到路径或使用 IO 类等。

我经常遇到的问题是从 Visual Studio (2010) (Win7) 重新启动开发中的站点时,它仍然坚持先前对 ASP.NET 临时 Internet 文件的引用,我发现一旦删除它们问题消失了。

手动删除,我发现我必须钻取多层子文件夹并删除它们的内容,然后才能在根文件夹中删除。

我尝试使用一个小实用程序以编程方式进行删除,但即使我从 VS 运行 1) 以“以管理员身份运行”或直接使用“启动我的 exe”时也会出现权限错误 (UnauthorizedAccessException)以管理员身份运行”。

有比手动钻取子文件夹更流畅的答案吗?

谢谢!

【问题讨论】:

    标签: asp.net .net permissions


    【解决方案1】:

    这本身不是一个解决方案,尽管您无法删除文件的原因是因为 IIS 或 Cassini(内置的 Visual Studio Web 服务器)锁定了它们。

    如果您使用的是 IIS,则终止运行应用程序的应用程序池;如果您使用的是 Cassini,则关闭 Visual Studio(或从其托盘图标中终止 ASP.NET 服务器);然后您可以删除 Temporary ASP.NET Files 目录中的根文件夹。

    然后只需重新启动应用程序池或 Visual Studio(如果您将其关闭)即可重新开始工作!

    如果您使用的是 IIS 并且它是 7 或更高版本,则可以运行一个命令行实用程序来停止它:

    appcmd start apppool /apppool.name: DefaultAppPool
    

    编写一个批处理脚本来为您完成会更容易:

    @echo off
    appcmd stop apppool /apppool.name: DefaultAppPool
    del "C:\Windows\Microsoft.NET\Framework\vx.xxx.x\Temporary..." /f /q
    appcmd start apppool /apppool.name: DefaultAppPool
    

    如果您使用的是 IIS 6.0,那么 here's an answer 使用 PowerShell 脚本来启动和停止它。您可以修改它以在它工作时删除临时文件夹。

    【讨论】:

    • 谢谢!剧本肯定是领跑者。奇怪的是,在不关闭任何东西的情况下,我可以在深入到 tehm 时手动删除文件(因此 IIS 至少允许这么多)。
    • @JohnSpiegel:也许锁是文件夹锁而不是文件锁?我从来都不想知道:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    • 2011-02-19
    相关资源
    最近更新 更多