我们通过HTTPS从IIS网站提供WCF点击一次安装应用程序。它位于另一个具有authenticaton(混合模式,窗口和窗体)但未应用于此文件夹的站点的子目录中。它还配置了一个非常高持续时间的静态缓存,这导致我们的WCF应用程序出现问题,因此我们在该文件中禁用了缓存,并且突然安装程序停止正常工作(如果你直接使用.application它工作)
我们找到了解决办法,设置一个5秒的缓存似乎解决了这个问题,但我想知道是否有人可以解释为什么会发生这种情况?修复它的配置更改是交换子文件夹中的web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<staticContent>
<clientCache cacheControlMode="DisableCache" />
</staticContent>
</system.webServer>
</configuration>
要:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00.00:00:05" />
</staticContent>
</system.webServer>
</configuration>
我们尝试改回来,问题再次出现,所以它不像应用程序池回收修复它那么简单。真正奇怪的是它没有发生在我们的暂存环境中,唯一的区别是它不是通过HTTPS提供的......
编辑:为了澄清这一点,我知道没有任何方法可以完全诊断这一点。我很高兴接受任何可能导致所述影响的理性解释,因为即使我尝试过,我也不认为我会产生这种效果......
答案 0 :(得分:1)
您提到在暂存环境中未见此问题。您的暂存环境是否有可能影响文件缓存的其他代理差异?
您可能会看到这一点的一个可能原因是ClickOnce是否在HTTP响应中使用缓存控制标头,然后确定它应该如何(或者是否)缓存应用程序以及与ClickOnce应用程序关联的其他文件。您的第一个配置告诉客户端不缓存该文件。这与ClickOnce想要做的事情背道而驰。通过允许缓存文件 - 甚至5秒 - 您允许ClickOnce将文件保存在本地,然后从那时起,ClickOnce的缓存逻辑用于确定是否需要更新。
答案 1 :(得分:1)
解决方法看似合理但如果我想了解更多,我会使用FileMon配置ClickOnce安装程序并查看它的运行时依赖性。我猜它会假设文件将持久存储在客户端的缓存中而无法找到它们。