2011-02-04 11 views
5

例外をクライアントとサービスのミスマッチ結合例外をスロー:WCF - バイナリエンコーディングを超えるHTTP

コンテンツタイプアプリケーション/石鹸+ msbin1 は、サービス http://localhost:1500/MyService.svcでサポートされていませんでした。 クライアントとサービスのバインディングが一致しない可能性があります。

クライアント構成:

<system.serviceModel> 
    <bindings> 

    <customBinding> 
     <binding name="NetHttpBinding" closeTimeout="00:01:00" 
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"> 
      <binaryMessageEncoding /> 
      <httpTransport allowCookies="false" bypassProxyOnLocal="false" 
         hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" 
         maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
         transferMode="Buffered" useDefaultWebProxy="true" /> 
     </binding> 
     </customBinding> 

    </bindings> 
    <client> 
     <endpoint address="http://localhost:1500/MyService.svc" 
     binding="customBinding" bindingConfiguration="NetHttpBinding" 
     contract="APP.BLL.IMyServiceContract" name="MyServiceEndpoint" /> 
    </client> 
    </system.serviceModel> 

サーバ構成:

<system.serviceModel> 
    <bindings> 
     <customBinding> 
     <binding name="NetHttpBinding" closeTimeout="00:01:00" 
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"> 
      <binaryMessageEncoding /> 
      <httpTransport allowCookies="false" bypassProxyOnLocal="false" 
         hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" 
         maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
         transferMode="Buffered" useDefaultWebProxy="true" /> 
     </binding> 
     </customBinding> 
    </bindings> 

    <services> 
     <service name="MyAppService"> 
     <endpoint address="" binding="customBinding" bindingConfiguration="NetHttpBinding" 
        contract="APP.BLL.IMyServiceContract"> 
     </endpoint> 
     </service> 
    </services> 

    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> 
      <serviceMetadata httpGetEnabled="true"/> 
      <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 

    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 

    </system.serviceModel> 
+0

サービスはIISまたは他のホスティングアプリケーション内でホストされていますか? –

+0

私は今のところVisual Studioの中でそれをホストしてきました。組み込みのWebサーバー(私はその名前を思い出すことはできません)。完了したらIISに展開します。 – mbursill

+0

サーバー[エンドポイント**契約**](http://msdn.microsoft.com/en-us/library/system.servicemodel.description.serviceendpoint.contract.aspx)がエンドポイントによって使用される実際の契約。 – SliverNinja

答えて

4

あなたはcustomBindingsなしbinaryMessageEncodingHTTPを使用することはできません。 textMessageEncodingまたはmtomMessageEncodingをそのまま使用できます。

reference on using customBindings with HTTP transportのこのブログ記事を参照してください。

<bindings> 
    <customBinding> 
     <binding name="basicHttpBinaryBinding"> 
     <binaryMessageEncoding />    
     <httpTransport /> 
     </binding> 
    </customBinding> 
</bindings> 
+3

これは私がいくつかのサイトで読んできたものと矛盾します:http://jeffbarnes.net/blog/post/2007/02/22/WCF-Enable-Binary-Encoding-Over-Http.aspx 記事がありますか?それについて話していますか? – mbursill

+1

HTTPはテキストベースのプロトコルです。 MTOMは、バイナリ添付ファイル(古いDIMEプロトコル)をHTTPに追加するように特別に設計されています。バイナリ・エンコーダは、テキスト・ストリームではなく、バイナリ・ストリームを必要とします。 –

+0

@mbursill - テストされた機能を反映するために答えを更新しました。 'customBinding'設定を使って' application/soap + msbin1'コンテンツタイプを得ることができます。 [Jeff Barnes投稿](http://jeffbarnes.net/blog/post/2007/02/22/WCF-Enable-Binary-Encoding-Over-Http.aspx)は正確です。 – SliverNinja

関連する問題