2016-07-14 4 views
0

私は過去にクライアントによって使用されているwcfサービスを持っています。wcf bindings - サービスとクライアントは一致しません

クライアントとサービスの両方は、追加の設定がない場合はbasicHttpBindingを使用します。

新しいクライアントが大量のデータを呼び出すようになりました。その結果、クライアント側ではデフォルトの65536サイズを超えて例外が発生します。

これは、両方のサービスとクライアント、 サービスに加えて、この問題に多くの回答

<bindings> 
    <basicHttpBinding> 
     <binding 
      name="Service1BasicHttpBinding" 
      maxReceivedMessageSize="6024800" 
      maxBufferPoolSize="6024800"> 
     </binding> 
    </basicHttpBinding> 
</bindings> 

に示唆したように、私はmaxReceivedMessageSizeを追加しました:

<services> 
    <service name="MyService" > 
     <endpoint 
      binding="basicHttpBinding" 
      bindingConfiguration="Service1BasicHttpBinding" 
      contract="MyServiceContract" /> 
    </service> 
</services> 

クライアント:

<client> 
    <endpoint 
     address="http:myendpoint" 
     binding="basicHttpBinding" 
     bindingConfiguration="Service1BasicHttpBinding" 
     contract="MyServiceContract" 
      name="MyService" /> 
</client> 

そしてすべてうまくいきます。 私の質問はではありません。は同じバインディングとbindingConfiguration(Service1BasicHttpBinding)を持つ他のクライアントを更新しましたが、それでも動作します。 これはなぜ機能しますか? バインディングが異なる場合にクライアントとサーバーが動作し、それがなぜうまくいかないのか不思議と思われる場所を見つけることはできません

答えて

0

更新された設定はクライアント固有のものであり、 (およびその逆)。

サービスとクライアントの間でバインディングプロトコルとセキュリティ設定が一致する必要がありますが、タイムアウト、最大受信メッセージサイズ、リーダークォータなどは、定義されている設定ファイルを所有するアプリケーション固有のものです。

言い換えれば、クライアントは「私は6024800であるメッセージを除いてできる」と言ってもよく、サービスは気にしません。今、クライアントがにサービスを受け入れるより大きいメッセージをに送信しようとすると、エラーが発生します。

関連する問題