博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Silverlight引用WebService时取消对ServiceReferences.ClientConfig文件的依赖
阅读量:4940 次
发布时间:2019-06-11

本文共 2139 字,大约阅读时间需要 7 分钟。

做过Silverlight项目的朋友都知道一般来说我们在Silverlight项目中都需要引用WebService或是WCF,引用的方式是在Visual Studio窗口中通过“添加服务引用”来添加引用,这时Visual Studio会生成一个 ServiceReferences.ClientConfig 配置文件,这个文件中存储了WebService的地址,绑定等信息,我们在Silverlight中实例化WebService的代理类时需要用到这个文件,没有这个文件WebService代理类的实例化就会失败。

使用ServiceReferences.ClientConfig的方式来实例化WebService代理类比较简单,但是也有一个缺点,就是每次将Silverlight项目上线时都需要手工打开生成的XAF包,将ServiceReferences.ClientConfig文件中的WebService地址从http://Localhost/YourProject/YourWebService.asmx的形式改为http://YourDomain/YourProject/YourWebService.asmx,如果某次你忘记了修改,可能会导致你的Siverlight项目在线上无法正常运行。那么有没有一种简单的方式让我们不需要每次上线都修改ServiceReferences.ClientConfig文件,让我们摆脱对ServiceReferences.ClientConfig的信赖呢?下面就说一下我的实现方式。

实现原理很简单,就是在一个类里手工的构造WebService的EndPoint, Binding等信息,将ServiceReferences.ClientConfig的作用用代码来代替,示例实现代码如下,代码很简单,各位一看就明白。

////// 得到WebService对象 /// 以后实例化WebService代理时请用var serviceClient = Utility.GetDesignerServiceInstance();的形式,    ///     不要再用默认的 var serviceClient = new WSDesignerSoapClient();    /// 后一种形式会报错,因为我们删除了ServiceReferences.ClientConfig文件    ///    ///
public static WSDesignerSoapClient GetDesignerServiceInstance() { var basicBinding = new BasicHttpBinding() { MaxBufferSize = int.MaxValue, MaxReceivedMessageSize = int.MaxValue, Name = "WSDesignerSoap" }; basicBinding.Security.Mode = BasicHttpSecurityMode.None; var endPoint = new EndpointAddress(getHostUrl() + "/WebService.asmx"); var ctor = typeof (WSDesignerSoapClient).GetConstructor(new Type[] {
typeof (Binding), typeof (EndpointAddress)}); return (WSDesignerSoapClient) ctor.Invoke(new object[] {basicBinding, endPoint}); } /// /// 得到当前所在网站的根目录,如Http://localhost/flow /// 注意站点名字必须是Flow,否则会报错。 /// ///
private static string getHostUrl() { var location = (HtmlPage.Window.GetProperty("location")) as ScriptObject; var hrefObject = location.GetProperty("href"); string url = hrefObject.ToString().Substring(0, hrefObject.ToString().IndexOf("Flow/") + 5); return url; }

 

转载于:https://www.cnblogs.com/yshuaiw/p/3252382.html

你可能感兴趣的文章
n后问题-回溯法
查看>>
poj3624 Charm Bracelet(0-1背包 滚动数组)
查看>>
联机SSH访问本地虚机环境
查看>>
IIS发布MVC ASP.NET网站
查看>>
sharepoint EnsureUser()根据字符串查找用户
查看>>
java 关于服务器、客户端通讯socket,read() 阻塞问题
查看>>
Qt加载SVG图片以及改变SVG图片颜色
查看>>
C# 反射机制的学习心得
查看>>
Android TableLayout 常用的属性介绍及演示
查看>>
MySQL主从配置
查看>>
网站空间的空间环境
查看>>
动态生成图片sevlet
查看>>
ORM原型概念
查看>>
百度前端学习日记07——布局(三)Flexbox
查看>>
[Unity] Android插件
查看>>
UML关系实现、泛化,依赖、组合
查看>>
西门子STEP7 OPC SERVER的组态
查看>>
nginx 长连接keeplive
查看>>
小程序基础
查看>>
R语言与显著性检验学习笔记
查看>>