0

当社のサードパーティ API は 2 つの異なる Web サービスを提供しますが、メソッドとモデルは同じです。それにもかかわらず、それらは URI (Web サービス パス、アクション パス [操作コントラクト]) のみが異なります。

だから私はすることにしました:

  1. VS を使用して wsdl からコードを生成します。

  2. 名前空間を編集して同じものを使用し、「共通」にし、代わりにサービス参照を使用しないように、Reference.cs編集コードを使用します。

  3. 使用するサービスの正しい URI を処理する新しいプロキシを作成します (内部に Reference.cs をラップします)。

現在、「Method1」に問題があります。アクション名が異なるためです。次の例外があります。

「サーバーは HTTP ヘッダー SOAPAction の値を認識しませんでした: http://www.api.com/service/Method1

正しいアクション名はhttp://www.api.com/service1/Method1です。

ここでの質問は、各サービスの各メソッドのアクション名を修正するために使用できる構成または動作はありますか?

それとも、API の実装ごとにコントラクトを追加し続ける限り、それぞれのコントラクトを追加し続けて、これに ChannelFactory を使用する必要がありますか?

助けてください、ありがとう。

4

1 に答える 1

1

ChannelFactory同じ問題に直面したときに直接使用することになりました

私の実装では、2 つの API に共通のメソッドをすべて備えた基本インターフェイスがありました。次に、2 つの別個のインターフェイス (サードパーティ API バージョンごとに 1 つ) を用意しました。これは、基本インターフェイスから継承し[OperationContract]、2 つの実装間で異なるメソッドと属性を追加します。

インスタンス化するときChannelFactory<> は、子インターフェイスの 1 つを使用しました。消費者コードをクリーンで保守しやすい状態に保つのに役立ちました

于 2011-04-18T09:52:00.307 に答える