天天看點

如何修改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檔案來處理,這是最後的大招了.暫時不想用.

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