ケース: WSDL 定義で使用される一般的なタイプ (Header、ApplicationError) を定義する一連の xsd ファイルがあります。各 Web サービスは、サービス固有のタイプの次に、これらの共有タイプの 1 つ以上をインポートします。
サービスのプロキシを生成するとき、サービス プロキシごとにこれらの共有型のコピーを取得し続けるので、これらを共有ライブラリに配置し、/reference を使用してこれらの型を含めることにします。これを機能させることができませんでした。
まず、プロキシを生成し、すべての *.xsd を含めると正常に動作し、コントラクトが生成されます。次に、xsd ごとに svcutil を /dconly パラメーターとともに使用しても機能しません。/XmlSerializer と /DataContractSerializer の両方。/importXmlType (または xsd.exe) のみが機能します。
次に、それらをクラス プロジェクトに配置し、生成されたコードを追加し、これをコンパイルして /reference パラメーターに使用すると、これらの型に対して生成されたコードが引き続き取得されます。
プロキシ用に生成されたクラスを使用しても、svcutil によって認識されません。
誰でもこのパターンの経験があり、おそらくこれらと同じ問題に遭遇したことがありますか?
XmlSerializer と DataContractSerializer の両方のエラー メッセージ svcutil /dconly /ser:XmlSerializer ApplicatieFout-v0200-b03.xsd
エラー: 名前空間 'http://schemas.customer.nl/ApplicatieFout-v0200' のタイプ 'ApplicatieFout' はインポートできません。要素 'FoutCode' のフォームは修飾する必要があります。型をデータ コントラクト型にマップできるようにスキーマを変更するか、ImportXmlType を使用するか、別のシリアライザーを使用します。
/dataContractOnly オプションを使用してデータ コントラクトの種類をインポートしていて、このエラー メッセージが表示される場合は、代わりに xsd.exe を使用することを検討してください。xsd.exe によって生成された型は、サービス コントラクトに XmlSerializerFormatAttribute 属性を適用した後、Windows Communication Foundation で使用できます。または、 /importXmlTypes オプションを使用してこれらの型を XML 型としてインポートし、サービス コントラクトの DataContractFormatAttribute 属性で使用することを検討してください。