クライアントから、開発中の WCF サービスが次のような応答を返す必要があることを指定するドキュメントを受け取りました。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hsdq="http://site.gov/21398">
<soapenv:Header/>
<soapenv:Body>
<inf:getCarsResponse xmlns:inf="inf">
<hsdq:Message1/>
<hsdq:Message2>
<hsdq:ApplicationData>
...
</hsdq:ApplicationData>
<hsdq:ApplicationDocument/>
</hsdq:Message2>
</inf:getCarsResponse>
</soapenv:Body>
</soapenv:Envelope>
しかし、私たちのサービスによって生成された応答は少し異なります。
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<getCarsResponse xmlns="inf">
<Message2 xmlns="http://site.gov/21398">
<ApplicationData>
...
</ApplicationData>
</Message2>
</getCarsResponse>
</s:Body>
</s:Envelope>
ApplicationDocument
セクションとセクションの欠落を修正できることを知っていHeader
ます。しかし、どうすれば私の応答を提供されたものとまったく同じにすることができますか?
可能なように構成したいということです。 1.不要な名前空間をxmlserializer
削除xsi
します。xsd
2. エンベロープの名前空間s
を に変更しsoapenv
ます。3.hsdq
名前空間はルート要素で指定する必要があり、URL だけでなく名前でも識別される必要があります。xmlns:hsdq="http://site.gov/21398"
(最初の応答:と 2 番目の応答: を比較してください。xmlns="http://site.gov/21398"
私はそれを使用する必要があると思いますIDispatchMessageFormatter
が、私には複雑すぎて、サンプルがないと ut を使用できませんでした。
みんなありがとう!