这几天在做给WCF做加密传输,结果当然是实现了加密传输,同时也发现了一个问题,有没有大神来答疑解惑一下.

事情是这样的.

在客户端的配置中,需要加入一个behavior,在config文件中是这样的.

  1. <behaviors>
  2.  
  3. <endpointBehaviors>
  4.  
  5. <behavior name="wsHttpBindingBehavior">
  6.  
  7. <clientCredentials >
  8.  
  9. <serviceCertificate >
  10.  
  11. <authentication certificateValidationMode="None" />
  12.  
  13. </serviceCertificate>
  14.  
  15. </clientCredentials>
  16.  
  17. </behavior>
  18.  
  19. </endpointBehaviors>
  20.  
  21. </behaviors>

按理说,任何在config的配置,都是可以写代码来实现的.这里写代码实现,我觉得又可以分两种:

  1. 写代码修改config的配置
  2. 写代码构造wcf的client.

因为我遇到这个需要修改的地方,Client已经部署了几千套,要一个一个去修改Client的配置,是很麻烦而且不科学的一件事情.幸好,程序架构能自动升级,只需要在升级的时候,用代码将behavior写到配置文件就可以了.听起来很完美.

可是呢,要把上面这段配置自动加到config中,我却找了几天都没有实现.情况如下:

  1. 利用Configuration类,增加behaviors节点,未到修改方法
  2. 利用代码修改在构造client的时候,只有通过System.ServiceModel.ClientBase<T>这种方式来修改,下面这段代码就可以
  1. client.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None;

3.可是现有代码框架不是用的ClientBase<T>,而是ChannelFactory<T>()方法创建的通道, ChannelFactory<T>()没有找到增加这个behaviors的方式.修改ChannelFactory变成ClientBase,现在这项目不可行,修改太大.

4.当然,还有一种方法就是把config文件当成xml文件来处理,这是最后的大招了.暂时不想用.

不知道能不能被人看到,反正每次都说我不能上首页.

====================================================================================================================

还是我自己来回答吧

ChannelFactory<ICalculator> factory = new ChannelFactory<ICalculator>("xxxx");

factory.Credentials.UserName.UserName="admin";
factory.Credentials.UserName.Password = "123456";
factory.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None;
var f = factory.CreateChannel();

如何修改config?的更多相关文章

  1. SAE设置记录:修改config.yaml实现地址重写和修改固定链接

    刚搭建完sae博客后闲置下来了,偶尔写两篇文章,最近想整理整理sae,于是开始. 刚新建完博客修改固定链接,可是保存后直接访问出现问题,访问不到文章了,而且我的博客地址前面会出现"1.&qu ...

  2. thinkphp5或3.2 php动态修改config配置文件永久保存

    thinkphp默认的参数方法只能读取,或者动态修改不能永久修改. 这是自己摸索出来的特发出来给需要的朋友(懂的朋友别笑话,功能我自己使用是没任何问题).有些参数还是保存在配置文件方便快捷!不一定所有 ...

  3. 修改config中的assemblyBinding

    修改config中的assemblyBinding 未测试这段代码 private void SetRuntimeBinding(string path, string value) { XmlDoc ...

  4. C# 修改Config文件,增删查改

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/BYH371256/article/det ...

  5. 树莓派ubuntu系统下修改config.txt文件 树莓派config.txt文件修改记录

    原文:https://www.raspberrypi.org/documentation/configuration/config-txt.md译文:http://my.oschina.net/fun ...

  6. 修改Config文件

    /// <summary> /// Config文件操作 /// </summary> public class Config { /// <summary> // ...

  7. C# 动态修改Config

    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); confi ...

  8. 修改config.php配置

    $data=array( "name"=>"222222", "tel"=>159131, "address" ...

  9. 树莓派 ubuntu 系统下修改config.txt文件调整分辨率记录

    参考 https://www.jianshu.com/p/99eea4db21c4 注:操作前最好先备份个 config.txt 文件 防止悲剧 防止悲剧 防止悲剧 终端下 进入boot/config ...

随机推荐

  1. python_10 迭代器和生成器

    迭代器协议: 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个Stopiteration异常,以终止迭代(只能往后走不能往前退) 2.可迭代对象:实现 ...

  2. codestyle 设置问题

    参考: https://blog.csdn.net/hugh77/article/details/43268195 使用 4 空格缩进,而非 TAB. 在小缩进(可以嵌套更深)和大缩进(更易读)之间, ...

  3. 【391】栈与队列,Python实现

    参考:python实现stack(栈)和队列(queue) - hjhmpl123的博客 - CSDN博客 参考:Python3 数据结构 | 菜鸟教程 栈和队列是两种基本的数据结构,同为容器类型.两 ...

  4. 自动滚动标签marquee

    <marquee>标签,它是成对出现的标签,首标签<marquee>和尾标签</marquee>之间的内容就是滚动内容.<marquee>标签的属性主要 ...

  5. 如何创建.gitignore文件,忽略不必要提交的文件

    1.gitignore 在工程实现过程中,会生成一些中间文件,或者在项目中的部分文件是不需要进行版本管理的.对于这些文件应该对于Github来讲是透明的.Github提供这种功能,可以自己指定哪些文件 ...

  6. 大数据学习笔记2 - 分布式文件系统HDFS(待续)

    分布式文件系统结构 分布式文件系统是一种通过网络实现文件在多台主机上进行分布式存储的文件系统,采用C/S模式实现文件系统数据访问,目前广泛应用的分布式文件系统主要包括GFS和HDFS,后者是前者的开源 ...

  7. ExecuteNonQuery()

    ExecuteNonQuery():执行一个SQL语句,返回受影响的行数,这个方法主要用于执行对数据库执行增加.更新.删除操作,注意查询的时候不是调用这个方法.用于完成insert,delete,up ...

  8. fortitoken

    1.token状态为error,且不能分配给用户使用 解决: 关联有User的token状态是error的原因是:用户一直并未使用.

  9. RHCS(概念篇)

    一. 什么是RHCS RHCS是Red Hat Cluster Suite的缩写,也就是红帽子集群套件,RHCS是一个能够提供高可用性.高可靠性.负载均衡.存储共享且经济廉价的集群工具集合,它将集群系 ...

  10. 50-用Python监听鼠标和键盘事件

    转自:https://www.cnblogs.com/qiernonstop/p/3654021.html 用Python监听鼠标和键盘事件 PyHook是一个基于Python的“钩子”库,主要用于监 ...