我已创建(使用在线示例)自定义绑定,我正在尝试使用它。不幸的是,我需要注册新的绑定。
这是我的app.config文件。
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="WCFServiceHost.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
</sectionGroup>
</configSections>
<appSettings>
<add key="ThreadPoolSize" value="10"/>
<add key="ChunkLength" value="60"/>
<add key="ClientSettingsProvider.ServiceUri" value=""/>
</appSettings>
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="UdpBinding, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</assemblies>
</compilation>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri=""/>
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400"/>
</providers>
</roleManager>
</system.web>
<system.serviceModel>
<client>
<metadata>
<wsdlImporters>
<extension type="UdpTransportBinding.UdpTransportElement, UdpTransportBinding, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</wsdlImporters>
<policyImporters>
<extension type="UdpTransportBinding.UdpBindingCollectionElement, UdpTransportBinding, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</policyImporters>
</metadata>
</client>
<services>
<service name="TransportService.TransportProtocol" behaviorConfiguration="MyBehavior">
<endpoint name="NetTcpEndPoint" address="" binding="netTcpBinding" contract="TransportService.ITransportProtocol">
</endpoint>
<endpoint name="BasicHttpBinding" address="" binding="basicHttpBinding" contract="TransportService.ITransportProtocol">
</endpoint>
<endpoint name="NetUdpEndpoint" address="" binding="udpTransportBinding" bindingConfiguration="config" contract="TransportService.ITransportProtocol">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="True"/>
</behavior>
</serviceBehaviors>
</behaviors>
<extensions>
<bindingElementExtensions>
<add name="udpTransport" type="UdpTransportBinding.UdpTransportElement, UdpTransportBinding, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</bindingElementExtensions>
<bindingExtensions>
<add name="udpTransportBinding" type="UdpTransportBinding.UdpBindingCollectionElement, UdpTransportBinding, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</bindingExtensions>
</extensions>
<bindings>
<udpTransportBinding>
<binding name="config"/>
<udpTransport/>
</udpTransportBinding>
</bindings>
我有app.config
这样,但是当我运行旧算法时出现了这个错误:
配置绑定扩展 system.serviceModel /绑定/ udpTransportBinding 无法找到。验证这一点 绑定扩展是正确的 在。注册 system.serviceModel /扩展/ bindingExtensions 并且它拼写正确。
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
首先,您是否绝对确定这是您班级的正确类型/装配信息?
UdpTransportBinding.UdpBindingCollectionElement, UdpTransportBinding,版本= 4.0.0.0, 文化=中性, 公钥= 31bf3856ad364e35
您可以找到WCF确实存在问题的方法的一种方法是打开第一次机会异常的处理,并在报告其错误错误之前查看内部正在进行哪种类型的WCF。为此,您可以在设置中禁用“仅我的代码”,并在Debug-&gt; Exceptions菜单中检查异常处理。
其次,这个配置不对:
<udpTransportBinding>
<binding name="config"/>
<!-- this can't be outside the binding -->
<udpTransport/>
</udpTransportBinding>
你确定这正是你所拥有的吗?另外,为什么要为udpTransportBinding显式创建绑定扩展,但是然后明确声明它是否在其中使用udpTransport?具有预定义绑定的全部意义在于它默认会自动选择该传输。如果用户定义了自定义绑定,您实际上只希望用户指定udpTransport绑定元素。