欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

如何修改config?

程序员文章站 2022-07-11 09:14:59
这几天在做给WCF做加密传输,结果当然是实现了加密传输,同时也发现了一个问题,有没有大神来答疑解惑一下. 事情是这样的. 在客户端的配置中,需要加入一个behavior,在config文件中是这样的. 按理说,任何在config的配置,都是可以写代码来实现的.这里写代码实现,我觉得又可以分两种: 因 ......

这几天在做给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文件来处理,这是最后的大招了.暂时不想用.

 

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