最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

Silverlight通过httpBinding访问IIS宿主WCF

来源:懂视网 责编:小采 时间:2020-11-09 08:13:52
文档

Silverlight通过httpBinding访问IIS宿主WCF

Silverlight通过httpBinding访问IIS宿主WCF:silverlight和wcf通信是大家开发中用得相对较多的东西,我以Silverlight 通过 httpBinding 访问 IIS 宿主 WCF 来简单介绍一下。 Silverlight 通过 httpBiding方式 访问 IIS 宿主 WCF是我们在Silverlight与WCF通信中最为常见的,也是用的最
推荐度:
导读Silverlight通过httpBinding访问IIS宿主WCF:silverlight和wcf通信是大家开发中用得相对较多的东西,我以Silverlight 通过 httpBinding 访问 IIS 宿主 WCF 来简单介绍一下。 Silverlight 通过 httpBiding方式 访问 IIS 宿主 WCF是我们在Silverlight与WCF通信中最为常见的,也是用的最

silverlight和wcf通信是大家开发中用得相对较多的东西,我以Silverlight 通过 httpBinding 访问 IIS 宿主 WCF 来简单介绍一下。 Silverlight 通过 httpBiding方式 访问 IIS 宿主 WCF是我们在Silverlight与WCF通信中最为常见的,也是用的最多的,我们用个很简

silverlight和wcf通信是大家开发中用得相对较多的东西,我以Silverlight通过httpBinding访问IIS宿主WCF 来简单介绍一下。

Silverlight通过httpBiding方式访问IIS宿主WCF是我们在Silverlight与WCF通信中最为常见的,也是用的最多的,我们用个很简单的例子进行演示。

项目结构:

项目目结构简单说明:

程序集名称 需添加的引用 简要说明
LxContracts System.Runtime.Serialization System.ServiceModel 用于存放操作契约与数据契约
LxServices LxContracts[项目] 服务,操作契约的实现
WcfHost.web LxContracts[项目] 和LxServices[项目] 利用Svc文件发布服务的站点
SilverlightDemo Silverlight程序,调用WCF服务

注意:建立Silverlight程序的时候,不需要承载网站,建立一个单一的Silverlight程序即可,这样做的原因是,把Silverlight和WCF服务不放到同一个站点下面,是为了演示跨域的问题。

代码实现:

类库LxContracts:(包括数据契约Student.cs和操作契约IStudent.cs)

Student.cs 代码

代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.Runtime.Serialization;

namespace LxContracts
{
 [DataContract]
 public class Student
 {
 /// 
 /// 学生编号
 /// 
 [DataMember]
 public int StuId { get; set; }

 /// 
 /// 学生姓名
 /// 
 [DataMember]
 public string StuName { get; set; }

 /// 
 /// 所在班级
 /// 
 [DataMember]
 public string ClassName { get; set; }

 /// 
 /// 联系电话
 /// 
 [DataMember]
 public string TelPhoneNum { get; set; }
 }
}
Student.cs 代码

代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.ServiceModel;

namespace LxContracts
{
 [ServiceContract]
 public interface IStudent
 {
 [OperationContract]
 List GetStudent();
 }
}
类库LxServices:( 改类库包括一个模仿获取数据库集合类StudentList.cs和服务类StudentService.cs)

StudentList.cs

代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using LxContracts;

namespace LxServices
{
 public class StudentList:List
 {
 public StudentList()
 {
 this.Add(new Student() { StuId = 1, StuName = "小明", ClassName = "计算机一班", TelPhoneNum = "123456" });
 this.Add(new Student() { StuId = 2, StuName = "小红", ClassName = "计算机二班", TelPhoneNum = "234567" });
 this.Add(new Student() { StuId = 2, StuName = "小兰", ClassName = "计算机三班", TelPhoneNum = "890123" });
 }
 }
}
StudentService 代码

代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using LxContracts;

namespace LxServices
{
 public class StudentService:IStudent
 {
 public List GetStudent()
 {
 //实际情况应该为从数据库读取
 //本例手动生成一个StudentList
 StudentList ListStuent = new StudentList();
 return ListStuent;
 }
 }
}
站点WcfHost.web

站点WcfHost.web,这是一个Asp.net 空web应用程序。

1、右击” WcfHost.web”—“添加”—“新建项”—“wcf服务”,命名为”StudentSrv.svc” 。如图:

在项目中删除”StudentSrv.svc.cs”文件和”IStudentSrv.cs”文件。右击”StudentSrv.svc”文件,选择”查看标记”,将代码修改为:

<%@ ServiceHost Language="C#" Service="LxServices.StudentService" %>

2、修改webconfig 文件,代码如下:

WebConfig

代码如下


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
注意:endpoint中的address 为空:因为svc文件的地址就是元数据发布的地址。

3、右击”StudentSrv.svc”文件,在”浏览器中查看”,显示如下图,说明服务已经部署好了,我用的端口是 9090:

在Silverlight中进行调用:

Silverlight调用wcf很简单,直接在”SilverlightDemo”中添加”服务引用即可”,Silverlight项目中会自动生成” ServiceReferences.ClientConfig”配置文件,当然也可以利用代码的方式调用,但是我比较懒 :)。

1、为Silverlight程序添加WCF:

“右击”—“SiverlightDemo”—“添加服务引用”—“输入服务地址”(我的是http://localhost:9090/WCF/StudentSrv.svc)--点击“前往”,就会找到服务,命名为“WCF.StudentSrv”后,点击“确定”

2、在Silverlight中调用WCF:

MainPage.xaml中添加”DataGrid”控件,xaml代码如下:

MainPage.xaml 代码

代码如下

 
 
 
 
 
 
 
MainPage.cs 代码

代码如下

public partial class MainPage : UserControl
 {
 ObservableCollection listStudent;
 public MainPage()
 {
 InitializeComponent();
 listStudent = new ObservableCollection();
 this.Loaded += new RoutedEventHandler(MainPage_Loaded);
 }

 void MainPage_Loaded(object sender, RoutedEventArgs e)
 {
 StudentClient proxyClient = new StudentClient();
 proxyClient.GetStudentAsync();
 proxyClient.GetStudentCompleted += new EventHandler(proxyClient_GetStudentCompleted);
 }

 void proxyClient_GetStudentCompleted(object sender, GetStudentCompletedEventArgs e)
 {
 if (e.Error == null)
 {
 listStudent = e.Result;
 this.dgStudnet.ItemsSource = listStudent;
 }
 }
 }

运行结果:

将” SilverlightDemo”设置为启动项目,运行,会产生下面的异常:

这就是因为当时建立项目的时候没有把Silverlight程序和WCF服务放到同一个站点的缘故,因此需要在发布WCF的网站根目录放置一个跨域文件:clientaccesspolicy.xml

clientaccesspolicy.xml



 
 
 
 
 
 
 
 
 
 

再次运行,结果如下图所示:

至此,Silverlight通过httbBingding方式访问IIS宿主的WCF的演示我们就进行到这里

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

Silverlight通过httpBinding访问IIS宿主WCF

Silverlight通过httpBinding访问IIS宿主WCF:silverlight和wcf通信是大家开发中用得相对较多的东西,我以Silverlight 通过 httpBinding 访问 IIS 宿主 WCF 来简单介绍一下。 Silverlight 通过 httpBiding方式 访问 IIS 宿主 WCF是我们在Silverlight与WCF通信中最为常见的,也是用的最
推荐度:
标签: 访问 通过 iis
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

Top