WCF自定义绑定问题

WCF自定义绑定问题,wcf,Wcf,我一直在玩弄一个让我发疯的pollingDuplex示例。我正在使用customBinding来集成readerQuotas元素,但我不断收到错误:“契约需要双工,但绑定'BasicHttpBinding'不支持它,或者没有正确配置以支持它。” 当我使用customBinding时,BasicHttpBinding从何而来?我已经检查了无数的示例,我的配置文件与他们的配置文件相匹配,但不起作用。有人能帮我吗? 谢谢 是否可能httpGetEnabled=“true”暗示使用BasicHttp

我一直在玩弄一个让我发疯的pollingDuplex示例。我正在使用customBinding来集成readerQuotas元素,但我不断收到错误:“契约需要双工,但绑定'BasicHttpBinding'不支持它,或者没有正确配置以支持它。” 当我使用customBinding时,BasicHttpBinding从何而来?我已经检查了无数的示例,我的配置文件与他们的配置文件相匹配,但不起作用。有人能帮我吗? 谢谢



是否可能
httpGetEnabled=“true”
暗示使用
BasicHttpBinding
?你真的需要这个功能吗?如果您对这一行进行注释,错误是否会消失?

您可能遇到了“简化配置”问题-详细说明见。
元素中的“name”属性必须是服务的完全限定名。由于您的界面是
AdminWebService.IAdminWebService
,您的服务名称不是
AdminWebService.AdminWebService
?如果是这样,修复name属性应该可以解决这个问题。

我不知道是否是这种情况,但是您可以尝试在自定义绑定中更改元素的顺序,以便传输是最后一个(即,
然后
)?IIRC当您使用代码创建自定义绑定时,这个命令是强制执行的。不,同样的事情。这就像是在另一个宇宙的某个地方检查另一个web.config文件。我也考虑过这个问题。尝试对其进行注释并将其设置为false。同样的事情。仍然会以某种方式转换为BasicHttpBinding。@algorunescu:那么你能提供你的自定义绑定实现吗?该死,就是这样。我实际上读过这个问题,但在我的配置中没有发现它。误导我的是,当我使用一个简单的[ServiceContract]时,相同的配置工作得很好,但一旦我将其转换为[ServiceContract(CallbackContract=typeof(IDuplexClient))]来实现客户端回调,就会出现错误。谢谢!我想弄明白那件事,简直快把自己逼疯了。
<configuration>
<system.serviceModel>

<extensions>
  <bindingElementExtensions>
    <add name="pollingDuplex" type="System.ServiceModel.Configuration.PollingDuplexElement, System.ServiceModel.PollingDuplex"/>
  </bindingElementExtensions>
</extensions>

<bindings>
  <customBinding>
    <binding name="DBNotification" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00">
      <httpsTransport maxBufferSize="2147483647" maxBufferPoolSize="2147483647"
         maxReceivedMessageSize="2147483647"/>
      <pollingDuplex duplexMode="MultipleMessagesPerPoll" maxPendingSessions="2147483647" maxPendingMessagesPerSession="2147483647"/>
      <binaryMessageEncoding>
        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
            maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
      </binaryMessageEncoding>
    </binding>
  </customBinding>
</bindings>

<services>
  <service name="AdminWebService" behaviorConfiguration="DBNotificationServiceBehavior">
    <endpoint address="adminservice" binding="customBinding" bindingConfiguration="DBNotification" contract="AdminWebService.IAdminWebService" />
    <endpoint address="mex"
          binding="mexHttpBinding"
          contract="IMetadataExchange"/>
  </service>
</services>

<behaviors>
        <serviceBehaviors>      
    <behavior name="DBNotificationServiceBehavior">
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="true"/>
      <serviceThrottling maxConcurrentSessions="2147483647"/>
    </behavior>
  </serviceBehaviors>
    </behaviors>
</system.serviceModel>

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>