【问题标题】:IIS Express overly caching classic ASP pagesIIS Express 过度缓存经典 ASP 页面
【发布时间】:2015-08-20 19:36:15
【问题描述】:

我有一个随机发生的问题,即当我对 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>

【问题讨论】:

  • 确保您的 web.config 没有启用输出缓存。 IIS/Express 默认不缓存asp,这是一个需要开启的功能。分享您的 web.config,我们可以更好地了解什么是 poppin。
  • @Frank 查看问题更新
  • 您确定缓存页面的是它的 IIS 而不是您的浏览器吗?如果您在页面顶部包含以下内容会发生什么情况如果它没有改变(意味着时钟被固定),那么您启用了输出缓存,但是查看您的 web.config 我会假设它不是在站点级别,而是在服务器级别。如果时间冻结,请通过向 url 添加不同的查询字符串来尝试。 page.asp?test=some-random-text-to-see-if-page-loads-123423423
  • @Frank 肯定是 IIS,而不是浏览器。调试时,我会在调试器中看到旧版本的页面。我确实发现在 applicationHost.config 中启用了输出缓存,所以我禁用了它,我正在测试是否可以解决问题。
  • @Frank 忘了我说的话。即使禁用了输出缓存,问题仍然存在。我只是碰巧幸运地避免了一个星期的问题,但它今天又抬起了丑陋的头。

标签: visual-studio-2013 asp-classic iis-express


【解决方案1】:

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

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

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

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

这似乎对性能有一点负面影响,但就我而言,这是值得的。

编辑

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

虽然有一个区别...我的 IISExpress.exe 版本是 8.0.8418.0(而 Visual Studio 是 12.0.21005.1 REL)。我希望这对你有所帮助,Keith,因为我知道这个错误有多烦人。祝你好运。

【讨论】:

  • 好建议,但它并没有解决我的问题。
  • 您是否尝试过不调试 (Ctrl+F5) 运行?似乎对我有用。
  • 是的,无论我是使用“开始调试”还是“不带调试”开始,我都看到了同样的问题。不过,我将尝试升级我的 IIS Express 版本。听起来很有希望,谢谢。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    你不仅要设置这个设置:

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

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

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

    始终保持缓存关闭。

    【讨论】:

      猜你喜欢
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 2023-04-01
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多