【问题标题】:WCF CustomBinding ConfigurationWCF 自定义绑定配置
【发布时间】:2009-05-06 12:22:25
【问题描述】:

我编写了一个继承自 CustomBinding 的自定义绑定类。 我的自定义类重写了 BuildChannelFactory 方法,并使用自定义 ChannelFactory 来创建自定义通道。

我在使用 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 元素?是别的吗?

【问题讨论】:

    标签: wcf web-services


    【解决方案1】:

    当您在代码中创建自定义绑定时,您是否还实现了“YourBindingElement”(源自 StandardBindingElement)和“YourBindingCollectionElement”(源自 StandardBindingCollectionElement)?

    如果是这样 - 使用它来配置您的自定义绑定,就好像它是任何其他绑定一样。

    第一步是在 的 extensions 部分的 app.config 或 web.config 文件中注册您的绑定

    <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 创建自定义绑定 - 系列的第 2 部分,但第 1 部分不公开:-(

    以下是代码中的示例自定义绑定,您可以下载完整的源代码:ClearUserNameBinding

    马克

    【讨论】:

      【解决方案2】:

      如果您想通过配置使用此自定义绑定,您必须扩展 BindingCollectionElement 抽象基础并在 web.config 中定义 bindingExtensions 元素。

      【讨论】:

        猜你喜欢
        • 2011-06-05
        • 1970-01-01
        • 2010-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多