我创建了一个自定义绑定(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的类。 .
附注如果您认为这是大量重复代码并且有很多设置,那么我同意。
更新:发现您的问题是什么:您的配置文件中至少需要一个空的
关于configuration - 通过 App.config 进行自定义绑定(bind)的配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1333287/