合同需要Duplex,但Binding'BasicHttpBinding'不支持它,或者没有正确配置以支持它

时间:2011-05-15 12:24:56

标签: silverlight wcf ria wcf-ria-services duplex

我已按照本教程构建聊天应用程序。当我尝试添加我的服务的引用时,我收到以下错误:

  

合同需要双工,但需要绑定   'BasicHttpBinding'不支持它   或未正确配置   支持它。

我的web.config如下:

<extensions>
  <bindingExtensions>
    <add name="pollingDuplex" type="System.ServiceModel.Configuration.PollingDuplexHttpBindingCollectionElement,System.ServiceModel.PollingDuplex, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </bindingExtensions>
</extensions>

<bindings>      
  <pollingDuplex>
    <binding name="chatPollingDuplex" duplexMode="MultipleMessagesPerPoll"/>
  </pollingDuplex>
</bindings>    

<services>      
  <service name="PrototypeSite.ChatService">        
    <endpoint address="" binding="pollingDuplex" bindingConfiguration="chatPollingDuplex" contract="PrototypeSite.ChatService" />
    <endpoint address="mex" binding="wsDualHttpBinding" contract="IMetadataExchange"/>
  </service>      
</services>

2 个答案:

答案 0 :(得分:6)

当我收到此错误时,它给我带来了很多痛苦,但解决方案非常简单 - 在web.config中仔细检查服务名称。

无论您是否在同一网页程序集中提供服务,您都必须包含服务的完整TypeName

答案 1 :(得分:1)

BasicHttpBinding是在默认端点上使用的绑定 - 当找不到与服务名称匹配的元素时创建的绑定。元素中的“name”属性必须与服务类的完全限定名称匹配,我认为在您的方案中不是这种情况。

如果您使用的是C#,则完全限定名称将是完整的名称空间+'。' +班级名称。如果您使用的是VB,则项目的“根命名空间”属性可能会添加到命名空间名称之前。找出要使用的名称的可靠方法是使用反射器或ildasm等工具,并打开包含服务类的DLL。