サード パーティから提供された 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")]
「アクション」値がどこから取得されたのかわかりません。
古い WSDL では値は有効ですが、新しい 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から推測しています)。デフォルト値は設定されていますか?