私の問題は、これと密接に関連しています:非標準ポートから .NET Web サービスを使用するにはどうすればよいですか? . 私の Web サービスはポート転送ファイアウォールの背後で実行されているため、WSDL ドキュメントで報告されたポート番号には、内部の大きな番号のポートが含まれています。WSDL ドキュメントを書き換えることができる SoapExtensionReflector クラスを作成しました。そのため、example.com/path/loginservice?wsdl のようなリクエストは正しく処理されます。
ただし、これは「disco」リクエストを処理しません: example.com/path/loginservice?disco. これは、次のような XML ドキュメントを返します。
<discovery>
<contractRef ref="http://example.com:10092/loginservice.asmx?wsdl" docRef="http://example.com:10092/loginservice.asmx"/>
<soap address="http://example.com/path/loginservice.asmx" binding="q1:LoginServiceSoap"/>
<soap address="http://example.com/path/loginservice.asmx" binding="q2:LoginServiceSoap12"/>
</discovery>
SOAP バインディングは SoapExtensionReflector によって適切に書き直されていますが、contractRef および docRef URL には大きな番号のポートがあります。どうすればそれらも書き直すことができますか?