非常奇怪的ClickOnce Web部署行为(缓存)

时间:2013-04-10 16:22:21

标签: c# winforms apache .net-4.0 clickonce

所以我最近通过ClickOnce将我的应用程序部署到Web服务器(确切地说是WAMP),并让VS2010自动生成网页和所有爵士乐。用户可以很好地下载应用程序。

当我推出第一次更新时,这种陌生感开始了。发生了2种不同的情况当那时到网站并点击安装时,它总是安装第一个版本而不是更新。此外,我在应用程序中有一个“检查更新”按钮,当他们点击它时会说“没有可用更新”(使用this code的变体)。

在预感中我让他们清除了他们的浏览器缓存并再次在应用程序中尝试“检查更新”按钮......并且看到它有效。

这里发生了什么?它是否缓存网页,从而没有看到更新?当他们访问它时,网页上的文字已经更新,说它是新版本,但在清除缓存之前无法安装。此外,检查更新代码是否也会访问网页(如果其他方法也不起作用)?在自动生成的网页标题中放置NO-CACHE HTML行会解决此问题吗?欢迎任何建议/见解。

1 个答案:

答案 0 :(得分:2)

我会像你说的那样研究你的Apache如何设置缓存。查看它发送的标题。确保它使用正确的MIME类型application/x-ms-application

发送.application文件

安装ClickOnce后,它将始终获得相同的Uri example.com/app/app.application,并将安装的版本号与刚刚下载的版本号进行比较。当您通过Visual Studio发布时,它会覆盖该位置的文件。所以,是的,我可以看到它是一个缓存问题。我很奇怪ApplicationDeployment API将使用相同的浏览器缓存,但谁知道它可能在内部使用IE。

我的测试ClickOnce应用程序是在MSDN的asynchronous example之上编写的。有一个进度字符串,您可以看到它在每次运行时下载.application。我没有看到与在UNC路径上或在启用了静态Web托管的AWS S3上托管部署相同的问题。这就是为什么我认为它可能是Apache中的东西?