1

いくつかのASP.netSOAPWebサービスを別のサーバーに移動する必要がありますが、それらは広く使用されており、以前の場所へのクライアント接続を切断することはできません。クライアントを変更することはできません。

新しいサービスの場所へのHTTPリダイレクト(302)を確立しましたが、SOAPクライアントはサービス応答の代わりにリダイレクトアドバタイズメントを取得します。

この問題に対処するためのいくつかのアプローチを見てきましたが、それらはすべてクライアントコードの変更を伴いますが、これはオプションではありません。私が残した唯一のアイデアは、目的の応答を返す透過プロキシSOAPサービスを作成することですが、結合を緩める代わりに、実際には、維持するのがばかげて醜い別のノッチを締めています。

より良い答えはありますか?

4

1 に答える 1

2

HttpServerUtility.Transferメソッドを使用して、古いサービスの古いURLを使用してスタブを作成することが、これを行うための最良の方法だと思います。これは、どのクライアントに対しても100%透過的である必要があります。つまり、HTTPレベルのリダイレクトなど、クライアントが正しく受信して応答するための情報は送信されません。

サーバー側では、古いWebサービス呼び出しを新しい呼び出しにマップでき、クライアントに対して完全に透過的である必要があります。これは、新しいサービスからの応答が古いサービスのWSDLを検証するのに十分近い場合にのみ機能します。Webサービスのメソッドと応答のシグネチャが大幅に変更されていると、透過的にそれを行うことができなくなります。

于 2012-10-15T17:14:12.620 に答える