如何修改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();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM