使用WCF从WSDL中删除集合父元素

我正在尝试创建一个将使用WCF自托管的SOAP Web服务。 Web服务的架构由客户端决定,不能更改。

这是我的网络方法(为便于说明而简化):

[ServiceContract(Namespace = "http://example.com/")]
public interface IOrderService
{
    [OperationContract]
    void SendOrder(string Name,Order[] Orders);
}

public class OrderService : IOrderService
{
    public void SendOrder(string Name,Order[] Orders)
    {
       // ...
    }
}

这是它使用的Order类:

[DataContract(Namespace = "http://example.com/")]
public class Order
{
    [DataMember]
    public string Number { get; set; }

    [DataMember]
    public string Item { get; set; }
}

我的问题是,调用此Web服务所需的SOAP主体如下所示:

<exam:SendOrder>
  <exam:Name>John Doe</exam:Name>
  <exam:Orders>
    <exam:Order>
      <exam:Number>1234</exam:Number>
      <exam:Item>iPhone</exam:Item>
    </exam:Order>
    <!-- More orders go here -->
  </exam:Orders>
 </exam:SendOrder>

但是我需要删除“ Orders”标签,以使结构更扁平,如下所示:

<exam:SendOrder>
  <exam:Name>John Doe</exam:Name>
  <exam:Order>
    <exam:Number>1234</exam:Number>
    <exam:Item>iPhone</exam:Item>
  </exam:Order>
  <!-- More orders go here -->
</exam:SendOrder>

我一直找不到解决方法。如果订单数组是类中的字段(而不是Web方法中的参数),则可以使用XmlElement属性对其进行标记,并使用XmlSeralizer来获得所需的结果。但是这种方法不适用于网络方法参数。

是否有任何方法可以让.NET创建实现上述扁平模式的Web服务?

sousou0263 回答:使用WCF从WSDL中删除集合父元素

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3109131.html

大家都在问