サプライヤシステムからの要求をリッスンするWCFアプリケーションを作成しようとしています。サプライヤは私にWSDLを提供しているので、サービスを作成し、そのエンドポイントを公開する必要があります。WCFサービス+予期しないオブジェクト構造を生成するSvcUtil
私はSvcUtil.exeを使用してC#クラスを生成しましたが、むしろ奇妙な型を出力しています。
これが私に与えられたWSDLの抜粋です:
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified">
<s:element name="Submit">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Incident">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" form="unqualified" name="TransactionId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" form="unqualified" name="TransactionType" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" form="unqualified" name="TransactionSubType" type="s:string" />
<s:element minOccurs="0" maxOccurs="unbounded" form="unqualified" name="ConfigurationItem">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" form="unqualified" name="AssetTag" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" form="unqualified" name="Name" type="s:string" />
....
私は実行するコマンドは、私は、これは、このような構造を作成することを期待するだけで
svcutil.exe file_name.wsdl
です:
class Submit { ... }
class Incident { ... }
class ConfigurationItem { ... }
シリアル化すると、次のようになります。
<Submit>
<Incident>
<TransactionId>12345</TransactionId>
<TransactionType>12345</TransactionType>
<TransactionSubType>12345</TransactionSubType>
<ConfigurationItem>
<AssetTag>xyz</AssetTag>
<Name>name</Name>
</ConfigurationItem>
</Incident>
</Submit>
しかし、SvcUtil.exeの出力は私に次のようになります:
class SubmitIncident { ... }
class SubmitIncidentConfigurationItem { ... }
それは提出束まで思われますし、インシデントを1つにオブジェクトを、また、それがそれぞれの上に「SubmitIncident」を付加しますネストされた要素シリアライズするときだから私はこれを取得:
<SubmitIncident>
<TransactionId>...</TransactionId>
<TransactionType>...</TransactionType>
<TransactionSubType>...</TransactionSubType>
<SubmitIncidentConfigurationItem>
<AssetTag>...</AssetTag>
<Name>...</Name>
</SubmitIncidentConfigurationItem>
</SubmitIncident>
これは、(彼らは私に話をすることはできませんので、私のサービスは彼らのWSDLと一致していません)サプライヤーの両方に問題が発生し、以降の処理で、私は、アプリケーションでやっています。誰も私がなぜこれが起こっているのか、それを止める方法、そしてSvcUtilが適切に出力されるのを理解するのを助けることができますか?