configuration - 通过 App.config 进行自定义绑定(bind)的配置

标签 configuration wcf wcf-binding

我创建了一个自定义绑定(bind),并希望使其可通过 App.config 进行配置。

该绑定(bind)目前没有特殊选项,因此仅支持就足够了

<endpoint address="http://myAddress" 
          binding="myBinding"
          contract="myContract">

检查了一些站点后,我发现我必须通过 <BindingExtension> 启用配置支持。然而,MSDN 网站并没有多大帮助,因为当我尝试添加

<extensions>
  <bindingExtensions>
    <add name="myBinding" 
         type="MyNamespace.MyHttpBinding, NameOfMyDll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
  </bindingExtensions>
</extensions>

,我在尝试启动该程序时仅收到以下错误消息:

Configuration binding extension 'system.serviceModel/bindings/myBinding' could not be found. Verify that this binding extension is properly registered in system.serviceModel/extensions/bindingExtensions and that it is spelled correctly.

bindingExtension中提到的类型指向继承自Binding的类型.

我必须添加什么才能为我的绑定(bind)启用配置支持?


我的目标只是能够将我的绑定(bind)导出到配置文件。我不想允许对绑定(bind)进行任何特殊设置。它应该只能在配置文件的 <endpoint> 上使用。标签。

最佳答案

你走在正确的道路上。然而,关键点是 BindingExtension 元素不应该直接指向绑定(bind)类本身。

相反,您需要有几个支持配置模型的类。 首先,您注册的 bindingExtension 实际上是一个继承自 StandardBindingCollectionElement 的类。 。这代表 StandardBindingElement 的集合,它是一个配置类,它具有您的绑定(bind)在 .config 文件中支持的所有配置属性,并负责创建您的 Binding 实例并设置在 .config 文件中设置的任何属性。

此外,请注意,通常,您会遵循类似的模式来创建 TransportBindingElement 的配置 View (如果您正在创建传输 channel ),以便您可以通过配置使用它来创建自定义绑定(bind)。在这种情况下,您将有一个继承TransportElement的类。 .

附注如果您认为这是大量重复代码并且有很多设置,那么我同意。

更新:发现您的问题是什么:您的配置文件中至少需要一个空的 部分。只需添加它,绑定(bind)就会被识别。

关于configuration - 通过 App.config 进行自定义绑定(bind)的配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1333287/

相关文章:

Python,记录 : use custom handler with dictionary configuration?

javascript - 飞行前响应失败,状态为 405

javascript - sessionStorage 中的 Json 与对象数组

c# - WCF 服务在 WebForm 中调用得太早?

ajax - 如何为 AJAX 单元测试创​​建 WCF 回复服务

WCF NetTCP 通过 Internet 绑定(bind)

c++ - 快速路径数据包处理的配置更新

wcf - 如何配置自定义安全 token 处理程序?

Java 国际奥委会 : distributed configuration

WCF 接收带有 SWA 负载的请求