1

ヘッダーに記載されている問題があります。いくつかの背景情報。

https://external_server.something.xy/SomeService/Somethingリバース プロキシ経由で外部に公開されている、このような URL があります。

  • リバース プロキシは HTTPS を剥ぎ取り、トラフィックをプレーンな HTTP として WCF サービスに転送し、HTTPS を応答に適用します。
  • バインディングは basicHttpBinding (with <transport clientCredentialType="Basic" proxyCredentialType="None" realm="" />) です。

これといくつかの契約上の理由により、静的 WSDL ファイル (Something.wsdl) がクライアントに配布されます。残念ながら、配布された静的 WSDL ファイルを使用せずに WSDL を取得し、(何らかの理由で) 呼び出しを動的に生成するコードがまだたくさんあります。

私が設定ファイルに設定した場合、顧客はHTTP 307 Temporary Redirect<serviceMetadata httpGetEnabled="true" externalMetadataLocation="../Something.wsdl"/>で歓迎されます。

いずれにせよ、調査の結果、IIS ホスト ヘッダーを設定すると、同じ IIS 上の他の多くのアプリケーションにも影響を与えることがわかっています。これは仕方のない解決策です。web.config で構成できるものはありますか、またはサーバーまたはリバース プロキシで URL 書き換えスキームを調査する必要がありますか?

追加のボーナスとして、ヘルプページに表示される URL を設定して、内部サーバーが表示されないようにすることができれば (リンクも機能するように!)。

4

2 に答える 2

2

同様の問題が発生し、静的WSDLをルーターに配置し(これがリバースプロキシと呼ばれていると思います)、サービス自体のserviceMetadataをオフにするだけで対処しました。

于 2012-07-03T22:27:53.580 に答える
2

私自身の質問に答えるために、私 (または私たち) はリバース プロキシで要求を書き直したので、クライアントと内部サーバーに対して透過的です。これで、このサービスへのメタデータ クエリがインターセプトされ、(ヘルプ ページに表示される URI を介して) 静的な WCF ファイルが参照され、それが返されます。

問題は、externalMetadaLocationタグを使用すると、IIS が HTTP 307 を返し、それがリバース プロキシによってクライアントに中継されることでした。もちろん、内部サーバーは外部アドレスを知らなかったため、リダイレクトは内部名で行われたため、問題が発生しました。

私が考えていたもう 1 つのオプションは、 Something ?に一致する REST 関数を作成することでした。wsdlは Web サービスの一部であるため、WCF メタデータ機能には到達しませんでした。しばらく考えた後、 IWsdlExceportExtension を使用してリクエストを受信し、ファイルを取得して返すだけ (つまり、リダイレクトなし) することを考えるようになりまし

于 2012-07-06T05:57:23.647 に答える