WCF SOAP Message更改单个vs列表响应的输出标记

时间:2014-03-13 05:25:48

标签: c# .net wcf soap

我们遇到的问题是,如果响应是单个对象,WCF XML Serializer正在更改输出对象的标记,但如果它是对象的列表,那么它是正确的。

这是列表项的响应

<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">
        <ListObjectsResponse xmlns="http://our.namespace/">
            <ListObjectsResult>
                <Object>
                ...
                </Object>
                <Object>
                ...
                </Object>
                ...
            </ListObjectsResult>
        </ListObjectsResponse>
    </s:Body>
</s:Envelope>

您可以看到我们在<Object>结果下有一堆<ListObjects>元素。

如果我们再调用另一个只返回一个<Object>的方法,那就是结果:

<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">
        <GetObjectResponse xmlns="http://our.namespace/">
            <GetObjectResult>
                ...
            </GetObjectResult>
        </GetObjectResponse>
    </s:Body>
</s:Envelope>

您可以看到<Object>标记已不再存在且已更改为<GetObjectResult>

我们原本希望看到单个项目的xml响应,如:

<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">
        <GetObjectResponse xmlns="http://our.namespace/">
            <GetObjectResult>
                <Object>
                    ...
                </Object>
            </GetObjectResult>
        </GetObjectResponse>
    </s:Body>
</s:Envelope>

生成的XML响应是否不正确,或者我们是愚蠢的,我们不应该担心XML本身?

0 个答案:

没有答案