个人项目中的WCF使用
今天闲着无事,给大家分享一下我的一个项目中WCF的使用。我这项目使用的是Silverlight,至于其他类型的使用方法也是一样的。
1.建立一个Silverlight带Web项目的解决方案。
2.在web项目中创建Wcf服务文件.如文件创建在web项目下Services文件夹中,名为HomeService.svc。
3.在客服端引用wcf服务。
4.在应用程序中获取Wcf服务。
1 string WCFServiceUri = "Services/HomeService.svc"; //WCF服务 相对路径 2 3 HomeService.HomeServiceClient hs = (HomeService.HomeServiceClient)CreateWebServiceObject(typeof(HomeService.HomeServiceClient), WCFServiceUri); 4 hs.UserLoginCompleted += new EventHandler<HomeService.UserLoginCompletedEventArgs>(hs_UserLoginCompleted); 5 hs.UserLoginAsync(this.txtLoginID.Text, this.pwbLoginPaw.Password); 6 7 8 private void hs_UserLoginCompleted(object sender, HomeService.UserLoginCompletedEventArgs e) 9 { 10 //code 11 } 12 13 14 /// <summary> 15 /// 指定最大接收信息的大小 16 /// </summary> 17 public static long dMaxReceivedMessageSize = 2147483647; 18 19 /// <summary> 20 /// 指定最大缓冲区的大小 21 /// </summary> 22 public static int dMaxBufferSize = 2147483647; 23 24 /// <summary> 25 /// <para>1.type 你需要创建服务的类型。例如:typeof(WcfClass) </para> 26 /// <para>2.webServiceName 服务路径/ServiceHost</para> 27 /// </summary> 28 public static object CreateWebServiceObject(Type type, string webServiceName) 29 { 30 BasicHttpBinding basicBinding = new BasicHttpBinding(); 31 basicBinding.MaxReceivedMessageSize = dMaxReceivedMessageSize; 32 basicBinding.MaxBufferSize = dMaxBufferSize; 33 basicBinding.SendTimeout = TimeSpan.FromMinutes(2); 34 CustomBinding binding = new CustomBinding(basicBinding); 35 36 EndpointAddress endPoint = new EndpointAddress(GetServicesUri(webServiceName,3)); 37 38 return Activator.CreateInstance(type, binding, endPoint); 39 } 40 41 /// <summary> 42 /// 获取路径 43 /// </summary> 44 /// <param name="sUri"></param> 45 /// <param name="type">1.路径到ClientBin下.2.根目录.3.当前页面路径</param> 46 /// <returns></returns> 47 public static string GetServicesUri(string sUri, int type) 48 { 49 var applicationUri = Application.Current.Host.Source; 50 string uri = string.Empty; 51 switch (type) 52 { 53 case 1: 54 uri = new Uri(Application.Current.Host.Source, string.Format("{0}", sUri)).AbsoluteUri; //ClientBin 55 break; 56 case 2: 57 uri = new Uri(Application.Current.Host.Source, string.Format("../{0}", sUri)).AbsoluteUri; //localhost 58 break; 59 case 3: 60 uri = new Uri(System.Windows.Browser.HtmlPage.Document.DocumentUri, sUri).ToString(); 61 break; 62 default: 63 uri = sUri; 64 break; 65 } 66 67 return uri; 68 }
这样便可以访问到web端的Wcf服务。
注意:在实例化BasicHttpBinding对象时,BasicHttpBinding的MaxBufferSize和MaxReceivedMessageSize最好设置成一样大小,本人测试了MaxReceivedMessageSize小于MaxBufferSize的情况,貌似是不可以的。
在一些实际的项目中,如果项目安全要求比较高的话,本人建议将服务端处理文件封装在DAL中,通过服务地址跳转的方式访问。
转载于:https://www.cnblogs.com/kurt/p/3556965.html
个人项目中的WCF使用相关推荐
- WCF项目中出现常见错误的解决方法:基础连接已经关闭: 连接被意外关闭
原文:WCF项目中出现常见错误的解决方法:基础连接已经关闭: 连接被意外关闭 在我们开发WCF项目的时候,常常会碰到一些莫名其妙的错误,有时候如果根据它的错误提示信息,一般很难定位到具体的问题所在,而 ...
- 项目中基于Rest的Wcf服务发布以及iBatisNet框架的使用(下)
iBatisNet框架的配置使用:iBatisNet框架的好处,有很多技术文档中有描述,在此只记录如何在项目中配置使用此框架.首先 在DAL层中添加引用:IBatisNet.DataMapper.dl ...
- 泛型委托在项目中的应用
Action<T> 泛型委托:封装一个方法,该方法只采用一个参数并且不返回值.可以使用此委托以参数形式传递方法,而不用显式声明自定义的委托.该方法必须与此委托定义的方法签名相对应.也就是说 ...
- C#项目中关于多个程序集下App.config文件的问题
在项目中我们会经常用到App.config文件,有的是自动生成的,比如引用webservice.wcf服务时生成:也有手动建立的配置文件直接默认名就为app.config. 这些配置有的保存当前程序集 ...
- C# 枚举在项目中的应用总结
本文主要是我在实际项目中对C#枚举的应用总结,如果存在不足的地方欢迎您指出. 一.枚举基本运用 1.枚举其实可以理解为一个恒量的结合,又或者可以认为它是一种类型.比如以下枚举定义: public ...
- .NET Framework 4.0 和 Dublin 中的 WCF 和 WF 服务 - z
在 2008 年 10 月份召开的专业开发人员大会 (PDC) 上,Microsoft 发布了有关 Microsoft .NET Framework 4.0 中将要提供的大量改进的详细信息,尤其是在 ...
- 如何在 ASP.Net Core 中对接 WCF
在 REST API 出现之前,SOAP (Simple Object Access Protocol) 一直都是基于 web 的标准协议,虽然现在 REST 大行其道,但在平时开发中总会遇到对接第三 ...
- SharePoint 2013 中自定义WCF服务
在使用SharePoint2013的时候,如果其他客户端 API 的组合不足,可以通过自定义 Web 服务扩展 SharePoint.默认情况下,SharePoint 2013 不仅支持创建自定义 A ...
- 创建寄宿在Windows服务中的WCF服务
1.创建Windows服务项目 2.Server1改名为你想要的名称,比如WinServer 3.在项目中新建一个WCF文件夹,用于存放wcf服务文件. 注:在WcfServer类的上面还要添加 [S ...
最新文章
- Dubbo环境搭建-ZooKeeper注册中心
- java转json jar包_java转换json需导入的jar包说明
- Mina集成Spring --- 在配置文件中配置sessionconfig
- Geolocation :基于浏览器的定位服务
- [Java基础]复制文件的异常处理try...catch...finally的做法
- 160 - 27 Cosh.1
- [MySQL] INFORMATION_SCHEMA 数据库包含所有表的字段
- Go 语言本身提供的包管理机制
- asp.net夜话之十一:web.config详解
- data=*(vu16*)addr;的理解?
- 导航窗口用html语言怎么写,html通用导航条制作详解
- 改变世界的15个网站
- Android微信代扣sdk无法拉起,微信JS-SDK选择图片遇到的坑
- 联通手机卡网速的修改
- 电缆故障测试仪的基本原理与组成——TFN DG15M电缆故障测试仪
- mysql按笔划排序_mysql中怎么按姓氏笔画排序
- Python编程:re中findall()用法
- loadrunner使用sitescope监测监控mysql数据库
- 获取沪深300成分股单日收盘价
- python(数据分析与可视化)六