2

パートナーの 1 社から Web サービスを呼び出しています。私はそれを呼び出すことに問題はなく、結果が得られます。応答には、null 可能な double があります。フィドラーでは、応答の XML でこれらの double に値があることがわかりますが、これらのフィールドの値が null であるため、どういうわけかこれらのフィールドはプロキシ クラスに逆シリアル化されません。

これは、私が取得した応答 xml の要約です。どういうわけか、id27 の値はシリアル化されませんが、id26 のブール値はシリアル化されます。なんで?

<extras soapenc:arrayType="ns2:Extra[16]" xsi:type="soapenc:Array">
    <extras href="#id1"/>
    <extras href="#id2"/>           
    ...
</extras>
...
<multiRef id="id1" soapenc:root="0" 
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
xsi:type="ns6:Extra" xmlns:ns6="http://model.bookingservice.app.traserv.com" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
    <assignments xsi:type="ns6:Assignment" xsi:nil="true"/>
    <category xsi:type="xsd:string">def_Surety</category>           
    ...
    <orderUnit xsi:type="xsd:string">Verblijf</orderUnit>
    <payAtLocation href="#id26"/>
    <price href="#id27"/>
    <priceNotes xsi:type="xsd:string" xsi:nil="true"/>
     ...
</multiRef>
...
<multiRef id="id26" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
xsi:type="xsd:boolean" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">true</multiRef>
<multiRef id="id27" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:double" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">345.0</multiRef>
4

1 に答える 1

0

WCF クライアントと軸 Web サービスにこれらの問題があることがわかりました。プロキシで解決できますが、生成されたクラスを編集する必要があるため、明らかに良くありません。または、Web サービスを変更することもできますが、これも問題です。これは、そのサービスを常に制御できるとは限らないためです。

とにかく、私はそれについてこれらの項目を見つけました: http://www.tomergabel.com/GettingWCFAndApacheAxisToBeFriendly.aspx

.NET がプリミティブ配列を Web サービスから逆シリアル化しないのはなぜですか?

于 2012-10-25T10:01:20.100 に答える