3

サード パーティから提供された WSDL ファイルを使用してプロキシ クラスを作成するために、Visual Studio の [サービス参照の追加] オプションを使用しています。私は WSDL の 2 つのバージョンを取得しました。それらを「OLD」と「NEW」と呼びます。

WSDL ファイルは同じであると思われますが (新しいファイルはメソッドのバージョンが更新されています)、プロキシ クラスを作成すると、OperationContractAttribute.Action で異なる値が取得されます。

OLD wsdl では、次のようになります。

[System.ServiceModel.OperationContractAttribute(Action="http://webservices.amadeus.com/SATRQT_13_2_1A", ReplyAction="*")]

新しい wsdl では、次のようになります。

[System.ServiceModel.OperationContractAttribute(Action="http://xml.amadeus.com/AmadeusWebServicesPT/Air_MultiAvailabilityRequest", ReplyAction="http://xml.amadeus.com/AmadeusWebServicesPT/Air_MultiAvailabilityResponse")]

「アクション」値がどこから取得されたのかわかりません。

古い W​​SDL では値は有効ですが、新しい WSDL では完全に間違っており、WS でサービスを使用しようとすると例外が発生します。

OLD wsdl ファイルを見ると、同じ値の「soapAction」が表示されます。ここから取られているようです。ただし、NEW wsdl には、OLD wsdl とまったく同じ値があります。

<wsdl:operation name="Air_MultiAvailability">
  <soap:operation soapAction="http://webservices.amadeus.com/SATRQT_13_2_1A" />

誰か私に正しい場所を教えてもらえますか?

アップデート

「アクション」要素についてさらに読んだ後、新しい wsdl に表示される値が DEFAULT 値であることに気付きました ( https://msdn.microsoft.com/en-us/library/system.servicemodel.operationcontractattribute.アクション (v=vs.110).aspx )

ここで、古い wsdl ファイルで Action 値が正しい値になる理由を理解する必要があります (正しい操作で wsdl ファイルで定義されたsoapActionから推測しています)。デフォルト値は設定されていますか?

4

1 に答える 1