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