gpt4 book ai didi

WCF 自定义绑定(bind)配置

转载 作者:行者123 更新时间:2023-12-04 14:20:12 26 4
gpt4 key购买 nike

我编写了一个继承自 CustomBinding 的自定义绑定(bind)类。我的自定义类覆盖了 BuildChannelFactory 方法并使用自定义 ChannelFactory 来创建自定义 channel 。

我在 WCF 客户端中使用自定义绑定(bind)类时遇到困难。如果我在代码中配置它,我就可以使用我的自定义绑定(bind)类:

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 元素?还是别的?

最佳答案

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

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

第一步是在 的扩展部分的 app.config 或 web.config 文件中注册您的绑定(bind)

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

现在,您的新绑定(bind)已在 WCF 中注册为“正常”可用绑定(bind)。在绑定(bind)部分中指定您的细节以及其他绑定(bind):

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

在此处指定其他参数,如“...BindingElement”类中所定义。

最后,像在 system.serviceModel 中的服务和/或客户端部分中使用普通绑定(bind)一样使用您的绑定(bind):

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

我真的找不到很多关于如何在网络代码中编写自己的绑定(bind)的资源 - Microsoft 有一个 WCF/WPF/WF sample kit其中包括一些样本,我从中基本上学到了足够的东西来弄清楚:-)

有一个真的很好article by Michele Leroux Bustamante关于创建自定义绑定(bind) - 系列的第 2 部分,但第 1 部分不公开:-(

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

马克

关于WCF 自定义绑定(bind)配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/829301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com