在构建WSDL / SVC服务时如何删除XML属性

时间:2018-08-23 11:59:22

标签: c# web-services wcf soap xml-serialization

我的svc服务如下:

[ServiceContract(Namespace = "http://my.service.com/rem")]
[XmlSerializerFormat]
public interface IRemitTest
{
    [OperationContract]
    void Report(Block[] Block);
}

它想要一个按类发送的XML,如下所示:

public class Block
{
    public string Name { get; set; }
}

非常简单,当有人使用我的服务时,他们应该发送一个肥皂信封,并使用一系列名称不同的Block

我的问题是我尝试发送

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rem="http://my.service.com/rem">
    <soapenv:Header/>
    <soapenv:Body>
        <rem:Report>
            <rem:Block>
                <rem:Name>Michael Lancoln</rem:Name>
            </rem:Block>
            <rem:Block>
                <rem:Name>Luis Wholecast</rem:Name>
            </rem:Block>
            <rem:Block>
                <rem:Name>Richard Berns</rem:Name>
            </rem:Block>
        </rem:Report>
    </soapenv:Body>  
</soapenv:Envelope>

这不起作用。它需要

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rem="http://my.service.com/rem">
    <soapenv:Header/>
    <soapenv:Body>
        <rem:Report>
            <rem:Block>           
                <rem:Block>
                    <rem:Name>Michael Lancoln</rem:Name>
                </rem:Block>
            </rem:Block>
            <rem:Block>           
                <rem:Block>
                    <rem:Name>Luis Wholecast</rem:Name>
                </rem:Block>
            </rem:Block>  
            <rem:Block>
                <rem:Block>
                    <rem:Name>Richard Berns</rem:Name>
                </rem:Block>
            </rem:Block>
        </rem:Report>
    </soapenv:Body>  
</soapenv:Envelope>

请注意双重rem:Block

如果我将服务更改为不使用数组作为输入:

[ServiceContract(Namespace = "http://my.service.com/rem")]
[XmlSerializerFormat]
public interface IRemitTest
{
    [OperationContract]
    void Report(Block Block);
}

这很好用,但只有一个块..但是我不必像数组那样必须加倍。.

我已经进行了2天,无法弄清楚如何删除第二个方块

有可能吗?

任何受到高度赞赏的帮助:D!

0 个答案:

没有答案