4

チャットアプリケーションを構築するために、このチュートリアルに従いました。サービスの参照を追加しようとすると、次のエラーが発生します。

コントラクトにはデュプレックスが必要ですが、バインディング'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>
4

2 に答える 2

6

このエラーが発生したとき、それは私にとって非常に苦痛でしたが、解決策は非常に簡単でした.web.configでサービス名を再確認してください。

同じ Web アセンブリにサービスがあるかどうかに関係なく、サービスの完全な TypeName を含める必要があります。

于 2012-02-07T06:54:09.840 に答える
1

BasicHttpBinding は、デフォルトのエンドポイントで使用されるバインディングです。これは、サービス名に一致する要素が見つからない場合に作成されるものです。要素の「名前」属性は、サービス クラスの完全修飾名と一致する必要がありますが、これはシナリオには当てはまらないと思います。

C# を使用している場合、完全修飾名は完全な名前空間 + '.' になります。+ クラス名。VB を使用している場合、プロジェクトの「ルート名前空間」プロパティが名前空間名の先頭に追加される可能性があります。使用する名前を確認する確実な方法は、reflector や ildasm などのツールを使用して、サービス クラスを含む DLL を開くことです。

于 2011-05-15T14:44:59.050 に答える