今天闲着无事,给大家分享一下我的一个项目中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使用相关推荐

  1. WCF项目中出现常见错误的解决方法:基础连接已经关闭: 连接被意外关闭

    原文:WCF项目中出现常见错误的解决方法:基础连接已经关闭: 连接被意外关闭 在我们开发WCF项目的时候,常常会碰到一些莫名其妙的错误,有时候如果根据它的错误提示信息,一般很难定位到具体的问题所在,而 ...

  2. 项目中基于Rest的Wcf服务发布以及iBatisNet框架的使用(下)

    iBatisNet框架的配置使用:iBatisNet框架的好处,有很多技术文档中有描述,在此只记录如何在项目中配置使用此框架.首先 在DAL层中添加引用:IBatisNet.DataMapper.dl ...

  3. 泛型委托在项目中的应用

    Action<T> 泛型委托:封装一个方法,该方法只采用一个参数并且不返回值.可以使用此委托以参数形式传递方法,而不用显式声明自定义的委托.该方法必须与此委托定义的方法签名相对应.也就是说 ...

  4. C#项目中关于多个程序集下App.config文件的问题

    在项目中我们会经常用到App.config文件,有的是自动生成的,比如引用webservice.wcf服务时生成:也有手动建立的配置文件直接默认名就为app.config. 这些配置有的保存当前程序集 ...

  5. C# 枚举在项目中的应用总结

    本文主要是我在实际项目中对C#枚举的应用总结,如果存在不足的地方欢迎您指出. 一.枚举基本运用 1.枚举其实可以理解为一个恒量的结合,又或者可以认为它是一种类型.比如以下枚举定义:   public ...

  6. .NET Framework 4.0 和 Dublin 中的 WCF 和 WF 服务 - z

    在 2008 年 10 月份召开的专业开发人员大会 (PDC) 上,Microsoft 发布了有关 Microsoft .NET Framework 4.0 中将要提供的大量改进的详细信息,尤其是在 ...

  7. 如何在 ASP.Net Core 中对接 WCF

    在 REST API 出现之前,SOAP (Simple Object Access Protocol) 一直都是基于 web 的标准协议,虽然现在 REST 大行其道,但在平时开发中总会遇到对接第三 ...

  8. SharePoint 2013 中自定义WCF服务

    在使用SharePoint2013的时候,如果其他客户端 API 的组合不足,可以通过自定义 Web 服务扩展 SharePoint.默认情况下,SharePoint 2013 不仅支持创建自定义 A ...

  9. 创建寄宿在Windows服务中的WCF服务

    1.创建Windows服务项目 2.Server1改名为你想要的名称,比如WinServer 3.在项目中新建一个WCF文件夹,用于存放wcf服务文件. 注:在WcfServer类的上面还要添加 [S ...

最新文章

  1. Dubbo环境搭建-ZooKeeper注册中心
  2. java转json jar包_java转换json需导入的jar包说明
  3. Mina集成Spring --- 在配置文件中配置sessionconfig
  4. Geolocation :基于浏览器的定位服务
  5. [Java基础]复制文件的异常处理try...catch...finally的做法
  6. 160 - 27 Cosh.1
  7. [MySQL] INFORMATION_SCHEMA 数据库包含所有表的字段
  8. Go 语言本身提供的包管理机制
  9. asp.net夜话之十一:web.config详解
  10. data=*(vu16*)addr;的理解?
  11. 导航窗口用html语言怎么写,html通用导航条制作详解
  12. 改变世界的15个网站
  13. Android微信代扣sdk无法拉起,微信JS-SDK选择图片遇到的坑
  14. 联通手机卡网速的修改
  15. 电缆故障测试仪的基本原理与组成——TFN DG15M电缆故障测试仪
  16. mysql按笔划排序_mysql中怎么按姓氏笔画排序
  17. Python编程:re中findall()用法
  18. loadrunner使用sitescope监测监控mysql数据库
  19. 获取沪深300成分股单日收盘价
  20. python(数据分析与可视化)六

热门文章

  1. SVN积极拒绝解决办法
  2. 基于微信的图片放大预览
  3. windows python MySQL-python安装过程
  4. 使用 Apache Commons CSV 读写 CSV 文件
  5. 支持字母数字下划线和中文的正则
  6. CXF 调用 .net webservice
  7. 数据库锁解决并发问题
  8. 将cocos2dx项目从Visual Studio 迁移到 xcode
  9. shinyapps安装
  10. jmeter压测_jmeter压测学习2linux运行jmeter环境