私の Web アプリケーションは複数の Web サービスを利用するため、次のようにそれぞれにバインドしています。
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_ICityDataService" allowCookies="true" maxBufferPoolSize="10000000" maxBufferSize="10000000" maxReceivedMessageSize="10000000">
<readerQuotas maxDepth="32" maxStringContentLength="10000000" maxArrayLength="10000000" />
</binding>
<binding name="BasicHttpBinding_IBuildingDataService" allowCookies="true" maxBufferPoolSize="10000000" maxBufferSize="10000000" maxReceivedMessageSize="10000000">
<readerQuotas maxDepth="32" maxStringContentLength="10000000" maxArrayLength="10000000" />
</binding>
<binding name="BasicHttpBinding_IEventDataService" allowCookies="true" maxBufferPoolSize="10000000" maxBufferSize="10000000" maxReceivedMessageSize="10000000">
<readerQuotas maxDepth="32" maxStringContentLength="10000000" maxArrayLength="10000000" />
</binding>
...
</basicHttpBinding>
</bindings>
私の開発環境では SSL を使用できません (そして必要ありません) が、デプロイするときは SSL を使用する必要があるため、これらのバインディングのそれぞれにセキュリティ モードを追加する必要があります。次の XDT 変換を適用しました。
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding>
<security mode="Transport" xdt:Transform="Insert">
<transport clientCredentialType="None" />
</security>
</binding>
</basicHttpBinding>
</bindings>
しかし、それは最初のバインディングにセキュリティ モードを追加するだけです。しかし、XDT Transform のドキュメントと多くの記事と SO の質問/回答を読んだ後でも、すべてのバインディングを選択するロケーターを指定して、子ノードがすべてのバインディングに追加されるようにする方法がわかりません。各バインディングを名前で指定することもできますが、それは扱いにくいようです。何か案は?