Configuration 通过App.config配置自定义绑定

Configuration 通过App.config配置自定义绑定,configuration,wcf,wcf-binding,Configuration,Wcf,Wcf Binding,我已经创建了一个自定义绑定,并希望通过App.config对其进行配置 绑定目前没有特殊的选项,因此只支持 <endpoint address="http://myAddress" binding="myBinding" contract="myContract"> 在检查了一些站点之后,我发现我必须通过启用配置支持。然而,MSDN站点没有多大帮助,因为当我尝试添加 <extensions> <bindingExt

我已经创建了一个自定义绑定,并希望通过App.config对其进行配置

绑定目前没有特殊的选项,因此只支持

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

在检查了一些站点之后,我发现我必须通过
启用配置支持。然而,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中提到的类型指向从
绑定继承的类型

要启用绑定的配置支持,我必须添加什么



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

您走对了方向。然而,关键的一点是bindingExtension元素不应该直接指向绑定类本身

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

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

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


更新:找到了问题所在:配置文件中至少需要一个空部分。只需添加它,现在就可以识别绑定。

一般来说,您所做的应该可以工作。您是否在不使用WebServiceHost的情况下尝试了它,但使用了普通的WebServiceHost?是的,您也使用了ServiceHost。问题依然存在。我注意到,即使我将扩展中的“type”属性更改为“foobar”之类的无意义属性,错误消息也不会更改。此外,我还尝试将绑定的dll添加到全局程序集缓存中。错误消息仍然相同:-(听起来您的绑定扩展根本没有加载。您是否尝试使用fuslogvw.exe检查程序集是否没有加载?WCF对注册配置扩展时如何写入程序集名称很挑剔。fuslogvw.exe没有帮助(无论我输入了什么类型,都保持为空)。但是,如果无法正确加载,则包含所述内容会创建错误消息。当我输入正确的名称时,它会加载并在控制台中显示我的绑定,但当我尝试创建
ServiceHost
时,我的问题仍然存在。谢谢!我自己永远不会找到解决方案!