2009-05-06 131 views
3

我寫了一個繼承自CustomBinding的自定義綁定類。 我的自定義類重寫了BuildChannelFactory方法,並使用自定義ChannelFactory創建自定義通道。WCF CustomBinding配置

我在使用WCF客戶端中的自定義綁定類時遇到了困難。 我能夠用我的自定義綁定類,如果我在代碼中進行配置:

Binding myCustomBinding = new MyCustomBinding(); 

ChannelFactory<ICustomerService> factory = 
    new ChannelFactory<ICustomerService>(myCustomBinding, 
     new EndpointAddress("http://localhost:8001/MyWcfServices/CustomerService/")); 

ICustomerService serviceProxy = factory.CreateChannel(); 
serviceProxy.GetData(5); 

我的問題是我不知道如何在App.config文件中配置它。 它是一個customBinding元素還是一個bindingExtension元素?還有別的嗎?

回答

5

當您在代碼中創建自定義綁定時,是否還與其一起實現了「YourBindingElement」(派生自StandardBindingElement)和「YourBindingCollectionElement」(派生自StandardBindingCollectionElement)?

如果是這樣 - 使用它來配置您的自定義綁定,就好像它是任何其他綁定一樣。

的第一步是註冊您在App.config或Web.config文件中的<擴展部分結合system.serviceModel >

<extensions> 
    <bindingExtensions> 
    <add name="yourBindingName" 
     type="YourBinding.YourBindingCollectionElement, YourBindingAssembly" /> 
    </bindingExtensions> 
</extensions> 

現在,您的新綁定註冊爲「正常「WCF中的可用綁定。指定您的細節在綁定節爲其他綁定,太:

<bindings> 
    <yourBinding> 
    <binding name="yourBindingConfig" 
      proxyAddress="...." useDefaultWebProxy="false" /> 
    </yourBinding> 
</bindings> 

這裏指定其它參數,如你的「...... BindingElement」類中定義。

最後,用你綁定就像在你的服務和/或客戶端部分正常綁定在system.serviceModel:

<client> 
    <endpoint 
    address="....your url here......" 
    binding="yourBinding" 
    bindingConfiguration="yourBindingConfig" 
    contract="IYourContract" 
    name="YourClientEndpointName" /> 
</client> 

我真的無法找到如何編寫自己的綁定了大量的資源在網絡上的代碼 - 微軟有一個WCF/WPF/WF sample kit,其中包括幾件樣品,從中我學到基本上足以看着辦吧:-)

有上創建自定義的綁定是一個真正的好article by Michele Leroux Bustamante - 一個系列的第二部分,但第1部分不公開: - (

下面是代碼中的示例自定義綁定,您可以從中下載完整的源代碼:ClearUserNameBinding

馬克

0

如果要使用此自定義通過配置綁定,你必須擴展BindingCollectionElement抽象基和在web.config中定義bindingExtensions元素。