当前位置: 代码迷 >> Silverlight >> 请问jv9版主及高手们一个有关问题,关于sliverlight调用webservice部署的有关问题
  详细解决方案

请问jv9版主及高手们一个有关问题,关于sliverlight调用webservice部署的有关问题

热度:5773   发布时间:2013-02-26 00:00:00.0
请教jv9版主及高手们一个问题,关于sliverlight调用webservice部署的问题
是这样的,我用了一个sliverlight的多文件上传,其中是调用了服务器的webservice实现上传数据。现在的做法是sliverlight项目引用了webservice服务后生成ClientBin下的文件再部署。问题就是,如果webservice的地址变了,又要在项目中重新引用webservice的服务地址再生成ClientBin下文件再部署。这样就很麻烦,是否有更好的方法能像一般的asp.ne项目那样把webservice的地址写在外面,如果webservice的地址变了只要改地址而不需要重新编译生成ClientBin下的文件再部署.
请jv9版主及其他高手们教我,谢谢!!
------解决方案--------------------------------------------------------
可以将WebService的地址放在Web.Config文件中,根据项目部署目录不同,修改Web.Config文件就可以了。
------解决方案--------------------------------------------------------
在你实例化可以客户端代理的时候,你除了无参数的方法,有没有看过其它重载?它有多达5个重载,如果你没有看过,那么你搞开发就太简单了。

至少,有一个重载有两个参数, (string endpointConfigurationName, string remoteAddress)这样定义的,其中第二个参数就可以定义你的服务器地址。

这样,你可以报服务器的域名从任意地址得到,不仅仅可以写到项目中,也可以从某个http服务器下载你的软件的配置参数,或者从silverlight的宿主网页(通常是html页面)的InitParams参数获得,或者要求用户第一次登录时配置/输入服务器域名并永久保存到客户端。总之服务器地址是你自己灵活编程的,是你应该设计的业务逻辑的一部分,不要被配置文件给栓死。
------解决方案--------------------------------------------------------
这个是页面上那个object中,添加的。就是加载你silverlight的那个页面,我这里是asp.net <param name="initParams"ip2=localhost:31581" />添加这个东东,ip2指示的就是你要变化的服务地址。


在调用服务的类中你可以通过下面的方式引用地址,ComplaintServiceClient这个是你引用的webservice的客户端,我这里是WCF,这样就能动态配置地址了!
_client = new ComplaintServiceClient("BasicHttpBinding_IComplaintService", string.Format("http://{0}/Services/ComplaintService.svc", System.Windows.Application.Current.Host.InitParams["ip2"]));

如果不明白再说。。
  相关解决方案