VS2008にいくつかのWebサービス参照を含むWPFアプリケーションがあります。さまざまな理由(最大メッセージサイズ、認証方法)のために、サービスバインディングのWPFクライアントのapp.configでいくつかの設定を手動で定義する必要があります。
残念ながら、これは、プロジェクトのサービス参照を更新すると、複数のバインディングとエンドポイントという混乱が発生することを意味します。Visual Studioは、数値の接尾辞(つまり、「Service」の複製としての「Service1」)を使用して新しいバインディングとエンドポイントを作成します。プロジェクト内のサービス参照ごとに1つのバインディングしかないため、構成が無効になります。
これは簡単に複製できます。ソリューションで単純な「HelloWorld」ASP.NetWebサービスとWPFアプリケーションを作成し、app.configバインディングのmaxBufferSizeとmaxReceivedMessageSizeを変更してから、サービス参照を更新するだけです。
現時点では、参照を更新した後にapp.configのチェックアウトを元に戻すことでこれを回避していますが、もっと良い方法があるはずだと思わずにはいられません。
また、手動で変更する必要がある設定は次のとおりです。
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm" />
</security>
と:
<binding maxBufferSize="655360" maxReceivedMessageSize="655360" />
サービスファクトリクラスを使用しているため、これらの設定をプログラムで設定できる場合は、プロパティが公開されていないように見えますが、機能します。