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

C# 非常奇怪的ClickOnce Web部署行为(缓存),c#,winforms,apache,.net-4.0,clickonce,C#,Winforms,Apache,.net 4.0,Clickonce,因此,我最近通过ClickOnce将我的应用程序部署到一个web服务器(确切地说是WAMP),并让VS2010自动生成网页和所有这些内容。用户可以很好地下载应用程序 当我推出我的第一次更新时,这种奇怪开始了。发生了两种不同的情况。当点击网站并点击安装时,它总是安装第一个版本,而不是更新。此外,我在应用程序本身中有一个“检查更新”按钮,当他们点击该按钮时,会显示“无可用更新”(使用的变体为) 凭直觉,我让他们清除浏览器缓存,然后再次尝试应用程序中的“检查更新”按钮。。。你瞧,它起作用了 这是怎么回

因此,我最近通过ClickOnce将我的应用程序部署到一个web服务器(确切地说是WAMP),并让VS2010自动生成网页和所有这些内容。用户可以很好地下载应用程序

当我推出我的第一次更新时,这种奇怪开始了。发生了两种不同的情况。当点击网站并点击安装时,它总是安装第一个版本,而不是更新。此外,我在应用程序本身中有一个“检查更新”按钮,当他们点击该按钮时,会显示“无可用更新”(使用的变体为)

凭直觉,我让他们清除浏览器缓存,然后再次尝试应用程序中的“检查更新”按钮。。。你瞧,它起作用了


这是怎么回事?是否缓存了网页,因此看不到更新?当他们访问它时,网页上的文本已经更新,说这是新版本,但他们在清除缓存之前无法安装。此外,检查更新代码是否也会出现在网页上(否则怎么也不起作用)?在自动生成的网页标题中放置一个无缓存HTML行可以解决这个问题吗?欢迎您提供任何建议/见解。

我将研究如何像您所说的那样为Apache设置缓存。查看它发送的标题。确保它正在发送具有正确MIME类型的.application文件
application/x-ms-application

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

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