我们从客户那里得到了一份文档,指定我们开发的 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
部分的缺失。但是我怎样才能让我的回复与提供的完全一样?
我的意思是我想配置xmlserializer
为可能: 1. 删除不必要的xsi
和xsd
命名空间。2. 将信封命名空间重命名s
为soapenv
. 3.hsdq
命名空间应该在根元素中指定,并且应该通过名称来标识,而不仅仅是通过 url。(比较第一个响应:xmlns:hsdq="http://site.gov/21398"
和第二个响应:xmlns="http://site.gov/21398"
我想我应该使用IDispatchMessageFormatter
它,但对我来说似乎太复杂了,我无法在没有任何样本的情况下使用 ut。
多谢你们!