2

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

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

<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>

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

找不到配置绑定扩展“system.serviceModel/bindings/myBinding”。验证此绑定扩展是否已在 system.serviceModel/extensions/bindingExtensions 中正确注册并且拼写正确。

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

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


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

4

1 回答 1

3

你在正确的轨道上。然而,关键点是 bindingExtension 元素不应该直接指向绑定类本身。

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

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

PS如果你认为这是一个非常多的重复代码,如果你有很多设置,那么我同意。

更新:发现您的问题是:您的配置文件中至少需要一个空的 <bindings/> 部分。只需添加它,现在就可以识别绑定。

于 2009-08-26T19:36:32.927 回答