C#WCF - ConfigurationErrorsException

时间:2011-05-16 21:26:03

标签: c# wcf

我已创建(使用在线示例)自定义绑定,我正在尝试使用它。不幸的是,我需要注册新的绑定。

这是我的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   并且它拼写正确。

有人可以帮我解决这个问题吗?

1 个答案:

答案 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绑定元素。