最近、WSDLが特定のフィールドの整数を指定するSOAP Webサービスで問題が発生しましたが、XMLには空の要素が含まれているため、.NET逆シリアル化ロジックでFormatExceptionがスローされます。
WSDLは次のようになります。
<xsd:element minOccurs="0" maxOccurs="1" name="TransID" type="xsd:int" />
そして、SOAPは次のようになります。
<TransID></TransID>
これにより、応答を解析するときに例外が発生します。私が話しているサーバーはベンダーのものであるため、変更することはできません。フィールドを文字列として再定義することで、短期的にこれをハッキングしています。
私の質問はこれです:この問題を診断しようとして、私はXMLをファイルに取り出し、WSDLインポートによって生成されたPOCOを使用して逆シリアル化をテストするために独自のXmlSerializerを作成しました。私が作成したXmlSerializerは、このXMLを適切に解析し、期待どおりに親型を生成します。例外なし。フィールド値はゼロであり、これは予想されることです。私が作成したSOAPデシリアライザーpukeとプレーンデシリアライザーが正常に機能するのはなぜですか?