IIS Express 过度缓存经典 ASP 页面

IIS Express overly caching classic ASP pages

我遇到了这个随机出现的问题,当我对 ASP 页面进行更改时,IIS Express 无法识别。它提供以前版本的页面。

我可以通过重新编辑页面、进行小的更改、然后撤消更改并重新保存文件来解决此问题。但这很烦人...

到目前为止,我只看到这种情况发生在经典 ASP 页面上,而不是我项目中的其他文件(html、js、css...)。我知道 IIS 缓存 ASP 页面并在文件更新时更新缓存,因此必须阻止 IIS 识别这些文件何时更改。我只是不知道那会是什么。

以防万一,我在 Windows 7.

上使用 Visual Studio 2013,IIS Express 7.1.1557

我的web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.5" />
        <customErrors mode="Off" />
    </system.web>
    <system.webServer>
        <httpErrors errorMode="Detailed" />
    </system.webServer>
</configuration>

我有完全相同的行为。到目前为止,这似乎已经解决了它:

在 IISExpress (%userprofile%\My Documents\IISExpress\config) 的 applicationhost.config 中,在 <system.webServer> 下,我禁用了缓存,但没有禁用内核缓存。这是我现在拥有的:

<caching enabled="false" enableKernelCache="false">
</caching>

到目前为止,它似乎可以解决问题。希望对你也有帮助。

这似乎对性能有一点负面影响,但在我看来是值得的。

编辑

使用一段时间后,我又开始获取缓存页面了。然后我尝试关闭 VS,确保 IISExpress 已停止,再次打开 VS,并在不调试的情况下启动网站(Ctrl+F5),到目前为止没有缓存问题。

不过有一点不同……我的 IISExpress.exe 版本是 8.0.8418.0(Visual Studio 是 12.0.21005.1 REL)。我希望这对你有帮助,基思,因为我知道这个错误是多么烦人。祝你好运。

自从将 IIS Express 从版本 7 升级到版本 10 (download here) 后,我没有遇到过这个问题。

See here 如何检测您的 IIS Express 版本。

不仅要设置这个设置:

<caching enabled="false" enableKernelCache="false"></caching>

正如罗伯特所写,但下面的也是:

<section name="caching" overrideModeDefault="Deny" />

始终关闭缓存。