• 如何修改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文件来处理,这是最后的大招了.暂时不想用.

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

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

    还是我自己来回答吧

    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();

  • 相关阅读:
    表单元素(控件)不可见属性“visibility”和“display”分析
    如何实现网页的右键菜单功能
    Google Chrome 11 浏览器 下Flash Debug 插件无效的解决办法
    embed区别object
    在Fedora 12 下安装Intel X4500 显卡驱动
    HDOJ 2000
    费马小定理
    HDOJ 2055
    HDOJ 1018(阶乘位数)
    大数阶乘所得数位数的定理
  • 原文地址:https://www.cnblogs.com/birds-zhu/p/10592457.html
Copyright © 2020-2023  润新知