WCF -ServiceBehaviorsをWCFエンドポイントに添付する方法
-
27-10-2019 - |
質問
サードパーティのWCFサービスを消費していますが、その構成は以下です(その一部)。割り当てたかった serviceBehaviors
エンドポイントに、しかしありません <service>
ここでタグを付けます。この場合、「ServiceBehaviors」をどのように割り当てますか?
<client>
<endpoint address="https://something/someservice.asmx" binding="customBinding" bindingConfiguration="ABCBinding" contract="Democlient.Soap" name="Soap" behaviorConfiguration="SoapEndpointB" />
</client>
<behaviors>
<endpointBehaviors>
<behavior name="SoapEndpointB">
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="SoapServiceB">
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
解決
割り当てます serviceBehaviors
クライアントのエンドポイントではなく、WCFサーバーエンドポイントへ。サードパーティのWCFサービスホストに、変更する必要がある場合に求めるサービス動作を追加することを要求する必要があります。
他のヒント
表示している構成は、クライアント側の構成であるように見えます。それは、あなたがどのようにサービスと通信するかを示しているだけです。それはあなたのクライアントについて何もサービスに伝えていません。
サービスにはクライアントに関する知識がないことを忘れないでください。クライアントがサービスの唯一の知識はメタデータ交換によるものであることを忘れないでください。
サービスがそうするための方法(.NETまたはWCFメカニズムを介してではなく)を提供しない限り、クライアントはサービスの動作方法を指定することも、それをすべきではありません。特定のサービスは、それぞれが独自の欲求を持っている多くの異なるクライアントからのリクエストを処理する可能性があります。そのような状況を処理する良い方法はありません。
所属していません StackOverflow