转自:使用代码去描述WCF配置文件

在应用程序部署的时候,WCF客户端因为服务器地址的变化,需要修改程序配置文件的地址URL,手动修改很不方便,还会造成错误,所以尽量把描述WCF配置文件的配置使用代码方式进行描述,通过在软件中输入服务器IP地址的方式,动态修改访问的URL,这样比较方便,也不会出错,导致程序运行异常。

下面我将一个WCF部署文件采用代码方式描述:

WCF客户端的配置文件:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <configuration>
  3. <system.serviceModel>
  4. <bindings>
  5. <wsHttpBinding>
  6. <binding name="WSHttpBinding_IMainService" closeTimeout="00:01:00"
  7. openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
  8. bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
  9. maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
  10. messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
  11. allowCookies="false">
  12. <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
  13. maxBytesPerRead="4096" maxNameTableCharCount="16384" />
  14. <reliableSession ordered="true" inactivityTimeout="00:10:00"
  15. enabled="false" />
  16. <security mode="Message">
  17. <transport clientCredentialType="Windows" proxyCredentialType="None"
  18. realm="" />
  19. <message clientCredentialType="Windows" negotiateServiceCredential="true"
  20. algorithmSuite="Default" establishSecurityContext="true" />
  21. </security>
  22. </binding>
  23. </wsHttpBinding>
  24. </bindings>
  25. <client>
  26. <endpoint address="http://localhost:8888/DataCenter.Factory/MainService/"
  27. binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IMainService"
  28. contract="IMainService" name="WSHttpBinding_IMainService">
  29. <identity>
  30. <servicePrincipalName value="host/WIN-QFIKKT28EHC" />
  31. </identity>
  32. </endpoint>
  33. </client>
  34. </system.serviceModel>
  35. </configuration>

编程中使用代码描述上述文件:在这里客户端引用的WCF服务命名空间定义为DataCenterFatoryC,客户端访问对象为  DataCenterFatoryC.MainServiceClient MainServiceClient1;

  1. using System.ServiceModel;
  2.  
  3. WSHttpBinding Bindins;
  4.  
  5. DataCenterFatoryC.MainServiceClient MainServiceClient1;
  6.  
  7. private void MainForm_Load(object sender, EventArgs e)
  8. {
  9. Bindins = new WSHttpBinding();//设置绑定
  10. Bindins.CloseTimeout = TimeSpan.Parse("00:01:00");
  11. Bindins.OpenTimeout = TimeSpan.Parse("00:01:00");
  12. Bindins.ReceiveTimeout = TimeSpan.Parse("00:10:00");
  13. Bindins.SendTimeout = TimeSpan.Parse("00:01:00");
  14. Bindins.BypassProxyOnLocal = false;
  15. Bindins.TransactionFlow = false;
  16. Bindins.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
  17. Bindins.MaxBufferPoolSize = ;
  18. Bindins.MaxReceivedMessageSize = ;
  19. Bindins.MessageEncoding = WSMessageEncoding.Text;
  20. Bindins.TextEncoding = Encoding.UTF8;
  21. Bindins.UseDefaultWebProxy = true;
  22. Bindins.ReaderQuotas.MaxDepth = ;
  23. Bindins.ReaderQuotas.MaxStringContentLength = ;
  24. Bindins.ReaderQuotas.MaxArrayLength = ;
  25. Bindins.ReaderQuotas.MaxBytesPerRead = ;
  26. Bindins.ReaderQuotas.MaxNameTableCharCount = ;
  27. Bindins.ReliableSession.Ordered = true;
  28. Bindins.ReliableSession.InactivityTimeout = TimeSpan.Parse("00:10:00");
  29. Bindins.ReliableSession.Enabled = false;
  30. Bindins.Security.Mode = SecurityMode.Message;
  31. Bindins.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
  32. Bindins.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None;
  33. Bindins.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
  34. Bindins.Security.Message.NegotiateServiceCredential = true;
  35. Bindins.Security.Message.AlgorithmSuite = System.ServiceModel.Security.SecurityAlgorithmSuite.Default;
  36. Bindins.Security.Message.EstablishSecurityContext = true;
  37.  
  38. string address = "http://localhost:8888/DataCenter.Factory/MainService/";//服务终结点的URL
  39. MainServiceClient1 = new DataCenterFatoryC.MainServiceClient(Bindins, new EndpointAddress(address));
  40. MainServiceClient1.Open();
  41. }

通过对Bindins的参数设置,能有效的描述访问过程的一些问题,比如上传下载大文件,大数据表都依赖重要参数的设置,否则运行中会有异常错误发生,这是我们应该注意的。

[转]使用代码去描述WCF配置文件的更多相关文章

  1. WCF 配置文件(三)

    配置文件概述 WCF服务配置是WCF服务编程的主要部分.WCF作为分布式开发的基础框架,在定义服务以及定义消费服务的客户端时,都使用了配置文件的方法.虽然WCF也提供硬编程的方式,通过在代码中直接设置 ...

  2. 30行代码搞定WCF并发性能测试

    [以下只是个人观点,欢迎交流] 30行代码搞定WCF并发性能 轻量级测试. 1. 调用并发测试接口 static void Main()         {               List< ...

  3. 数据段描述符和代码段描述符(二)——《x86汇编语言:从实模式到保护模式》读书笔记11

    这篇博文,我们编写一个C语言的小程序,来解析数据段或者代码段描述符的各个字段.这样我们阅读原书的代码就会方便一点,只要运行这个小程序,就可以明白程序中定义的数据段或者代码段的描述符了. 这段代码,我用 ...

  4. 数据段描述符和代码段描述符(一)——《x86汇编语言:从实模式到保护模式》读书笔记10

    一.段描述符的分类 在上一篇博文中已经说过,为了使用段,我们必须要创建段描述符.80X86中有各种各样的段描述符,下图展示了它们的分类. 看了上图,你也许会说:天啊,怎么这么多段描述符啊!我可怎么记住 ...

  5. 在Maven项目中添加代码目录下的配置文件

    问题 Maven 是约定大于配置的一种工具, 通常约定在 src/main/resources 目录下放配置文件, 当我们想要在 src/main/java 代码目录下放置配置文件用来测试, Mave ...

  6. 通过纯代码方式发布WCF服务

    网络上搜索WCF服务,一般是寄宿在IIS,通过WebConfig方式配服务地址,接口类型等信息,但是对于我这样的懒人,目前项目在开发阶段,实在不愿意每次添加新服务就更新配置文件,于是使用了反射来加载服 ...

  7. WCF配置文件与文件下载之坎坷路

    题外话:本以为我会WCF了,精通WCF了,毕竟刚做过一个WCF的项目,不就是写写契约接口,然后实现接口,改下配置.最后用控制台或者服务发布一下,不就能用了.不就是简单ABC吗?不是So Easy吗?做 ...

  8. WCF配置文件详解

    今天来看看WCF的配置方法. 上图整理了服务配置过程中所用到的基本的元素,大致的步骤主要是首先要在调用服务的程序集中添加服务的一个引用,然后添加一个service并指定服务的名称.终结点,如果添加了b ...

  9. WCF配置文件

    因为要上传较大的图片,WCF传递数组的默认的最大数组16KB就不够了.以下讲解配置内容. 服务端配置 这里一个WCF项目中有1个服务,配置文件如下(位于system.serviceModel标签中): ...

随机推荐

  1. 微信小程序获取地理位置

    小程序只支持获取当前位置的经纬度,并不能直接获取到地理名称,需要通过第三方来逆地址解析,这里我选择的是腾讯位置服务 在使用前需要去申请key,这里是地址:https://lbs.qq.com/cons ...

  2. HTML-ul分分钟理解

    在HTML中,列表有三种,如图分别是有序.无序和自定义列表.上面是我在网络上找到的一张图片很明了就看以看出来,今天要分享的就是其中的无序列表Ul(unordered list),给大家整理了一下我所知 ...

  3. 解决Logger在Android Studio 3.1版本无法正常加载tag格式

    已经升级到Android Studio 3.1的同学可能会发现一个问题, Logcat中如果短时间出现多条日志tag相同, 只会显示第一条日志的tag, 后面的tag会自动隐藏, 这时com.orha ...

  4. Zabbix Server参数文件详解

    Zabbix的配置文件一般有三种: zabbix_server.conf:zabbix server的配置文件 zabbix_proxy.conf:zabbix proxy的配置文件 zabbix_a ...

  5. Unity通过指定摄像机截屏

    简介 介于照抄网上之前的截图教程,然后在实际应用过程中出现了一些小小的问题,修正了一下下,特此分享一下 PS:代码在后面 原理 原理很简单,就是将一个相机的内容渲染到一个贴图上,然后将贴图保存为图片 ...

  6. JS——client

    clientTop.clientLeft: clientTop:盒子的上boder clientLeft:盒子的左border clientWidth与clientHeight 1.在有DTD情况下: ...

  7. html——行内元素、块元素、行内块元素

    行内元素:span  ,a,  ,strong , em,  del,  ins.特点:在一行上显示:不能直接设置宽高:元素的宽和高就是内容撑开的宽高. 块元素:div,h1-h6,p,ul,li.特 ...

  8. java攻城狮之路--复习JDBC(利用BeanUtils、JDBC元数据编写通用的查询方法;元数据;Blob;事务;批量处理)

    1.利用BeanUtils的前提得要加入以下两个jar包: commons-beanutils-1.8.0.jar commons-logging-1.1.1.jar package com.shel ...

  9. CSS3利用box-shadow实现相框效果

    CSS3利用box-shadow实现相框效果 <style> html { overflow: hidden; background-color: #653845; background- ...

  10. Centos安装smokeping教程

    Centos安装smokeping教程 一 .安装基本依赖包 ntpdate time.windows.com #64bit rpm -Uhv http://apt.sw.be/redhat/el6/ ...