彩票走势图

Silverlight动态加载外部XML指定地址的WebService

转帖|其它|编辑:郝浩|2011-02-11 13:34:44.000|阅读 1336 次

概述:Silverlight可以加载外部的XML文件里面的内容,那么我们可不可以在外部XML里面配置一个WebService地址,并且以此加载这个地址来动态加载WebService呢?这样子就可以避免当WebService地址改变的时候,还要打开XAP包来重新修改WebService配置的地址了。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

  Silverlight可以加载外部的XML文件里面的内容,那么我们可不可以在外部XML里面配置一个WebService地址,并且以此加载这个地址来动态加载WebService呢?这样子就可以避免当WebService地址改变的时候,还要打开XAP包来重新修改WebService配置的地址了。

  答案当然是可以的。在这里,我制作了一个实例。

  在前面一节里面,我们讲到了使用WebClient来下载Silverlight程序外部的XML文件内容。在本节中,我们重点需要讲解一下如何使用反射来动态生成WebService代理类。关键代码如下:

public void InitializeServices(string serviceAddress)

{

BasicHttpBinding basicBinding = new BasicHttpBinding();//创建BasicHttpBinding绑定类

basicBinding.MaxBufferSize = 2147483647;//设置最大缓存字节

basicBinding.MaxReceivedMessageSize = 2147483647;//设置最大的接受消息缓存字节

CustomBinding binding = new CustomBinding(basicBinding);

BindingElement binaryElement = new BinaryMessageEncodingBindingElement();

EndpointAddress endPoint = new EndpointAddress(serviceAddress);//根据读取的外部XML指定的Webservice地址来实例化终结点地址。

WebServiceSoapClient _LBControl = new WebServiceSoapClient();//实例化WebService代理类

_LBControl = (WebServiceSoapClient)Activator.CreateInstance(typeof

(WebServiceSoapClient), binding, endPoint);//使用反射来实例化我们需要指定的webService地址

  当然以上只是关键性代码,我们在实践中还需要自己写一个WebService做测试,在本实例源代码程序中,我们在SLReadXML.Web项目中新建了一个WebService.asmx页面,此页面写了一个简单的WebService方法:

[WebMethod]

public string HelloWorld()

{

return "Hello World For TestData";

}

  然后我们右键点击SLReadXML项目名然后选择“添加服务引用”,在弹出的窗口中,我填入SLReadXML.Web中WebService.asmx页面的http地址。(注意这里的Http以你自己的WebService地址为准,你可以重新架设一个网站目录或者IP上。)//localhost:1239/webService.asmx,然后点击“前进”,在这里创建好这个服务引用的代理类。并且命名此命名空间名为LBControl,然后我们需要在App.xaml.cs文件中引入以下命名空间:

using System.IO;  

using System.Xml;  

using System.Windows.Browser;  

using System.ServiceModel;  

using System.ServiceModel.Channels;  

using SLReadXML.LBControl; 

  当然System.ServiceModel域名空间还需要单独引用其DLL文件。在SLReadXML右键--“添加引用”。

  另外想要WebService能够被访问到,还需要添加clientaccesspolicy.xml文件,此文件叙述了你可以安全的引用某一个网站下的WebService.类似于安全许可吧。值得注意的是这个文件必须放在你的网站的根目录下面,那么你的这个WebService文件才能够被访问到。不是虚拟目录的根目录,而是你网站的根目录。切记。

  clientaccesspolicy.xml源代码:

<?xml version="1.0" encoding="utf-8" ?>

<access-policy>

<cross-domain-access>

<policy>

<allow-from http-request-headers="*">

<domain uri="*"/>

</allow-from>

<grant-to>

<resource path="/" include-subpaths="true"/>

</grant-to>

</policy>

</cross-domain-access>

</access-policy>

  好了。现在基本上已经可以实现动态的访问XML来动态的读取WebService地址。而不用每次都要去XAP包里面修改WebService地址了。那样太麻烦了。

  最后给出Config.xml的源代码:

1 <configuration>

2 <TestData>//localhost:1239/webService.asmx</TestData>

3 <SecData>Secend Test Data</SecData>

4 </configuration>

 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:网络转载

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP