http エンドポイント経由でアクセスできる WCF Web サービスがあります。これで、このサービスは https を介してロード バランサーで公開されます。クライアントは svcutil.exe を介して .Net で作成されますが、Java クライアントには WSDL も必要です。
私が理解していることは次のとおりです。
- 内部的には、Web サービスは http サービスであり、何も変更する必要はありません。アドレスは、WSDL ..?wsdl を含む http://myserver.com/example.svc です。
- 外部的には、サービスはアドレスhttps://loadbalancer.com/example.svc および WSDL ..?wsdlを持つhttpsサービスとして表示される必要があります。
他の投稿から、ロード バランサーの問題は次の動作構成で解決できることがわかりました。
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<useRequestHeadersForMetadataAddress>
<defaultPorts>
<!-- Use your own port numbers -->
<add scheme="http" port="81" />
<add scheme="https" port="444" />
</defaultPorts>
</useRequestHeadersForMetadataAddress>
</behavior>
この回避策を使用すると、両方の URL がサービスのヘルプ ページに解決されますが、 https ://loadbalancer.com/example.svc を呼び出すと、ページからhttp://loadbalancer.com/example.svc?wsdl に移動します。http を https に置き換えると、wsdl をロードできますが、内部リンクはすべてhttpsではなくhttpです。
httpsGetEnabled="true" に切り替えようとすると、多くの https 関連の問題が発生します。サーバー自体が http しか認識していないため、これが役立つかどうかはわかりません。
したがって、私の問題は、負荷分散された URL の https です。WSDL メタデータに http ではなく https を表示するように WCF に指示できますか? また、どのようにすればよいですか?