当前位置: 代码迷 >> Web Service >> ClickOnce 客户端下载安装及登录的有关问题
  详细解决方案

ClickOnce 客户端下载安装及登录的有关问题

热度:181   发布时间:2016-05-02 02:15:27.0
ClickOnce 客户端下载安装及登录的问题
本人为了学习最近写了个Winform的应用程序,是通过WebService访问数据库的。


现在准备通过ClickOnce的形式发布,在VisualStudio发布,发布时如果指定好IP地址的话,
在服务器上部署完毕之后,客户端下载安装或登录时,就必须使用该部署的IP地址,
如果想把部署的文件拷贝到其它服务器上并部署,则客户端通过新的IP地址访问时就无法完成下载及登录操作。


而应用程序中的app.config文件中的WebService地址又是在程序发布时已经写死在那里了。


假如,服务器IP地址变了,
难道需要我重新在VS上修改app.config配置文件中的WebService地址,然后生成发布一个指定URL的本地部署文件?


当客户端通过浏览器输入服务器IP地址和端口号进行访问时,会从服务器端下载文件到本地并进行安装:


该文件夹中有从服务器上下载下来的文件,包括配置文件,但是下载过来的是用户通过VS发布时指定好的WebService IP地址。
不一定是服务器真实的地址,用户登录时就会提示无法访问。



这样不太人道吧,请教各位大神,发布时有没有动态指定服务器IP地址的方法,或者客户端在通过浏览器访问服务器IP地址后自动下载服务器端文件并修改下载到本地的配置文件(WebService地址改为服务器的IP地址)。这样就能保证客户端不用考虑服务器端的IP或端口变化,都可以顺利的访问。

坐等各位大神的回答(不懂或不知道的还请不要浪费屏幕空间,谢谢合作)。


------解决思路----------------------
你把两个无关的东西搅和在一起了。分别来说一下吧——但是前提是知道,这两个IP(或者域名)无关。

第一个,clickonce自动更新地址。这是指当用户点击已经安装好的应用程序、然后应用程序自动去检测新版本时要去自动地访问的地址。如果应用程序在这个地址找到新版本,则会自动更新应用程序版本。至于第一次安装所用的地址,并不受这个限制,你随便发布在任何一个 http 网站下都可以从浏览器上访问安装网页。

你的第二个问题,你自己的webservice服务地址,那是你的应用程序自己控制的事情。比如说假设你使用了google发布的一个“翻译”服务,那么你在你的应用中就会直接使用此服务的url,怎么会跟你的clickonce安装更新的地址有关系呢?

如果一个应用程序在发布之前不知道真正的服务的地址应该如何配置,那么你不可能像写的比较含混的msdn文档说的那样总是去“更新web服务”然后重新编一个发布程序。

你的应用程序中在实例化web服务的客户端代理对象时,如果你看看实例化方法的参数,你可以看到有 url 地址的参数的(只不过像 msdn 文档或者一些入门书往往都为了敷衍初学者而省掉了这个介绍)。这个参数 url 串是可以在运行时去动态产生的。那么你的程序要访问的 web服务的地址,可以硬编码到程序中、由用户在登录时的某种输入来匹配得到、从客户端本地的某个txt或者ini等文件得到、从你们公司自己的一个统一的网站地址间接下载,等等方法都可以,完全看你们自己的设计。


------解决思路----------------------
在 clickonce 整个发布过程中,都与 webservice 服务地址无关。所以不要把两个 url 搅和在一起考虑。

  相关解决方案