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

事情是这样的.

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

<behaviors>

      <endpointBehaviors>

        <behavior name="wsHttpBindingBehavior">

          <clientCredentials  >

            <serviceCertificate >

              <authentication  certificateValidationMode="None"  />

            </serviceCertificate>

          </clientCredentials>

        </behavior>

      </endpointBehaviors>

</behaviors>

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

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

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

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

  1. 利用Configuration类,增加behaviors节点,未到修改方法
  2. 利用代码修改在构造client的时候,只有通过System.ServiceModel.ClientBase<T>这种方式来修改,下面这段代码就可以
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. leetcode240

    public class Solution { public bool SearchMatrix(int[,] matrix, int target) { , j = matrix.GetLength ...

  2. 编织织物的knit course direction and knit wale direction

    来自:http://www.definetextile.com/2013/04/course-wale.html

  3. 资产管理平台 glpi

    1.安装apache yum install httpdyum install httpd-devel 2.安装php 3.配置apache支持php 4.下载glpi并解压 5.配置apache 6 ...

  4. 【转】vMAN 和 PVID

    vMAN关的情况下,如果用户的包内带有VLAN TAG,则以用户的TAG为准,如果用户的包内不带VLAN TAG,就打上PVID:vMAN开的情况下,无论用户的包内是否带有VLAN TAG,都强制在外 ...

  5. 学习日 day1

    今天第一天开始写博客,希望以后能坚持,每天写,一是记录自己学习的历程,更重要的是复习每天学过的东西. 今天学习的内容:time模块的相关语法 导入方式 首行输入import time即可 time.t ...

  6. Nginx – access_log格式及配置

    日志格式 日志内容 192.168.199.164 – jeson [14/Apr/2018:07:17:09 +0800] “GET /?feed=rss2 HTTP/1.1” 200 13883 ...

  7. uvm_pre_do

    https://blog.csdn.net/tingtang13/article/details/46535649 1.uvm_do 封装了一系列接口,封装越多,灵活性越差.所以增加了三个接口:pre ...

  8. CSS如何作小于1PX的边

    小于1PX的边能使页面变得更加精致,那么具体怎么做呢? 主要思路就是设置伪元素先放大再通过变换缩小. 代码如下 .border { position: relative;//如果有圆角 } .bord ...

  9. HTMLParser和BeautifulSoup使用入门和总结

    1.HTMLParser一般这么用: from html.parser import HTMLParser from urllib import request class MyHtmlParser( ...

  10. CentOS7 firewalld防火墙配置

    [root@ecs ~]# firewall-cmd --version       //查看版本0.3.9 [root@ecs ~]# firewall-cmd --state        //查 ...