Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1017179
  • 博文数量: 243
  • 博客积分: 3053
  • 博客等级: 中校
  • 技术积分: 2975
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-02 21:11
文章分类

全部博文(243)

文章存档

2013年(2)

2012年(20)

2011年(5)

2010年(114)

2009年(102)

我的朋友

分类:

2010-07-14 14:43:01

很多人肯定在实际的应用开发中都被Silverlight调用WCF服务的相关操作折磨了一阵子。要想很好的掌握这一应用技巧,还是需要我们从不断的操作中去积累经验。在这里我们将会为大家详细介绍一下这方面的知识。

WCF工程中需要注意的地方:

1.新建一个crossdomain.xml文件,内容如下

  1. < ?xml version="1.0" encoding="utf-8" ?> 
  2. < cross-domain-policy> 
  3. < allow-access-from domain="*" /> 
  4. < !-- 意为:允许来自任意域名对本web服务站点的任意跨域访问,
    如要限制跨域访问站点:可将"*"更改为相应域名,多个域名则为多个
    < allow-access-from ... />节点 --> 
  5. < /cross-domain-policy> 

2.修改web.config文件内容

  1. < endpoint address="" binding="basicHttpBinding" 
    contract="Demo.
    WCF.IService1"> 
  2. < endpoint address="mex" binding="basicHttpBinding" 
    contract="IMetadataExchange"/>

3.或app.config文件内容,增加basicHttpbinding绑定,默认的情况下可能会有其他的绑定

注意,在同一个服务接口上绑定不同协议的时候,地址一定要不一样

  1. < endpoint address="" binding="basicHttpBinding" 
    contract="Demo.
    WCF.IService1"> 
  2. < endpoint address="ws" binding="wsHttpBinding" 
    contract="Demo.
    WCF.IService1"> 
  3. < endpoint address="mex" binding="basicHttpBinding" 
    contract="IMetadataExchange"/>

因为目前Silverlight只支持basicHttpBinding

Silverlight工程需要注意的地方:

注意其address访问地址

  1. < client> 
  2. < endpoint address="" 
    binding="basicHttpBinding" 
  3. bindingConfiguration="BasicHttpBinding_IService1" 
    contract="ServiceReference1.IService1" 
  4. name="BasicHttpBinding_IService1" /> 
  5. < /client> 

实现Silverlight调用WCF服务代码如下:

  1. view plaincopy to clipboardprint?  
  2. private void Button_Click(object sender, RoutedEventArgs e)   
  3. {   
  4. ServiceReference1.Service1Client client = new Demo.Slapp.
    ServiceReference1.Service1Client();   
  5. client.GetDataAsync(9);   
  6. client.GetDataCompleted += new EventHandler< Demo.Slapp.
    ServiceReference1.GetDataCompletedEventArgs
    >
    (client_GetDataCompleted);   
  7. client.CloseCompleted += new EventHandler< System.ComponentModel.
    AsyncCompletedEventArgs
    >
    (client_CloseCompleted);   
  8. }   
  9. void client_GetDataCompleted(object sender, Demo.Slapp.
    ServiceReference1.GetDataCompletedEventArgs e)   
  10. {   
  11. if (e.Error == null)   
  12. {   
  13. this.btnDemo.Content = e.Result;   
  14. }   
  15. else   
  16. {   
  17. this.btnDemo.Content = "eror";   
  18. }   
阅读(1369) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~