我已经创建了一个自定义绑定,并希望通过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
的类型。
我必须添加什么才能为我的绑定启用配置支持?
Update
我的目标是能够将绑定导出到配置文件。我不想允许绑定的任何特殊设置。它应该只用于配置文件的<endpoint>
标记。
I've uploaded a minimal sample project where the bug occurs to
megaupload
。
答案 0 :(得分:3)
你走在正确的轨道上。但关键是bindingExtension元素不应直接指向绑定类本身。
相反,您需要有几个支持配置模型的类。 首先,您注册的bindingExtension实际上是一个继承自StandardBindingCollectionElement的类。这表示StandardBindingElement的集合,它是具有绑定将在.config文件中支持的所有配置属性的配置类,并且将负责创建Binding实例并在其上设置已设置的任何属性在.config文件中。
另外,请注意,通常,您将遵循类似的模式来创建TransportBindingElement的配置视图(如果您正在执行传输通道),以便您可以通过配置使用它创建自定义绑定。在这种情况下,您将有一个继承TransportElement的类。
P.S。如果你认为这是一个非常多的重复代码,如果你有很多设置,那么我同意。
更新:发现您的问题:您至少需要一个空的&lt; bindings /&gt;配置文件中的部分。只需添加它,现在就可以识别绑定。