我已按照本教程构建聊天应用程序。当我尝试添加我的服务的引用时,我收到以下错误:
合同需要双工,但需要绑定 '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>
答案 0 :(得分:6)
当我收到此错误时,它给我带来了很多痛苦,但解决方案非常简单 - 在web.config中仔细检查服务名称。
无论您是否在同一网页程序集中提供服务,您都必须包含服务的完整TypeName
答案 1 :(得分:1)
BasicHttpBinding是在默认端点上使用的绑定 - 当找不到与服务名称匹配的元素时创建的绑定。元素中的“name”属性必须与服务类的完全限定名称匹配,我认为在您的方案中不是这种情况。
如果您使用的是C#,则完全限定名称将是完整的名称空间+'。' +班级名称。如果您使用的是VB,则项目的“根命名空间”属性可能会添加到命名空间名称之前。找出要使用的名称的可靠方法是使用反射器或ildasm等工具,并打开包含服务类的DLL。