4

私は WCF サービスを持っています。このサービスには、 type の引数を受け取る操作がありますRequest。これは単なる基本型であり、操作を呼び出すときに、送信したい要求の完全な実装を持つRequest_V1( から継承された) 型の値を実際に送信します。Request

soapUI を使用してサービスをテストしようとすると、Request_V1(適切な名前空間を追加して) 複雑な型の型を作成できますが、何らかの理由で、サービスはRequest型のように値を受け取ります。

について読んで、クライアントでこの継承関係を何らかの形で明示的に指定する必要があることがServiceKnowTypeわかりましたが、soapUIでそれを行う方法に関する情報は見つかりませんでした

誰かが同じ問題を経験して解決しましたか?

ありがとう

4

3 に答える 3

2

また、SOAP メッセージでタイプを指定する必要があります。例えば

<Request i:type="d:RequestV1">

...

ここで、i は XML-Instance 名前空間として定義されます

于 2016-04-15T19:16:03.700 に答える
1

サービス側では、特定の派生型に型キャストする必要があります。

operation (Request request){
    if(!(request is Request_V1)){
        throw Excetion("Unknown type!");
    }

    var request_v1 = Request as Request_V1;

    // use request_v1
}

SOAP UI 側で、次のように type を指定します。

<soapenv:Body xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <ns1:OperationName>
     <ns1:request i:type="ns2:Request_V1">

参照する前に、ns1 と ns2 を定義していることを確認してください。

于 2014-09-30T15:54:36.977 に答える
0

サービスではなく、クライアントで継承を指定しません。SOAPUI で問題になることはありません。データ コントラクトに正しい宣言があることを確認してください。これは役立つかもしれません - Deserialize Abstract Class

于 2013-03-26T22:52:20.073 に答える