如何修改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的配置,都是可以写代码来实现的.这里写代码实现,我觉得又可以分两种:
- 写代码修改config的配置
- 写代码构造wcf的client.
因为我遇到这个需要修改的地方,client已经部署了几千套,要一个一个去修改client的配置,是很麻烦而且不科学的一件事情.幸好,程序架构能自动升级,只需要在升级的时候,用代码将behavior写到配置文件就可以了.听起来很完美.
可是呢,要把上面这段配置自动加到config中,我却找了几天都没有实现.情况如下:
- 利用configuration类,增加behaviors节点,未到修改方法
- 利用代码修改在构造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文件来处理,这是最后的大招了.暂时不想用.
不知道能不能被人看到,反正每次都说我不能上首页.
上一篇: python-面试常用 --变量、内存管理(小整数池,引用计数)
下一篇: 赚钱的真相