删除datacontract中的名称空间前缀

时间:2017-06-02 09:36:56

标签: c# web-services wcf soap

我的问题如下:

我正在使用WCF创建一个SOAP服务,我正在使用名为 Boomerang SOAP& amp;的Chrome插件测试它。 Rest Client (它通过加载你的wsdl创建一个请求,你只需要更改值)。

但每次我的datamembers都有命名空间的前缀而且我不想要它们。

请求应如下所示:

enter image description here

我明白了:

enter image description here

这是我的服务:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.ServiceModel.Web;
using System.Text;
using Ory_Soap.DTO;

namespace Ory_Soap
{

    [ServiceContract (Namespace = "http://my.company.com")]
    [XmlSerializerFormat]
    public interface FeedbackReceiverSOAP {

        [OperationContract]
        [WebInvoke]
        void receiveProvisioningFeedback(ProvisioningFeedback provisioningFeedback);


    }



    [DataContract(Namespace = "http://my.company.com")]
    public class ProvisioningFeedback
    {
        [DataMember(Name="header")]
        public Header header { get; set; }

        [DataMember(Name = "simIdentity")]
        public SimIdentity simIdentity { get; set; }

        [DataMember(Name = "responseStatus")]
        public ResponseStatus responseStatus { get; set; }

        [DataMember(Name = "parameters")]
        public List<Parameter> parameters { get; set; }

        [DataMember(Name = "options")]
        public List<Option> options { get; set; }
    }

}

我已经尝试在我的DataContract上设置一个空命名空间,但它不起作用。 我很确定我在Datamembers中的名字属性在这里是可选的,但我拼命尝试了这一点。

你可以帮我解决这个问题吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

您的DataContract属性指定了命名空间值&#34; http://my.company.com&#34;所以你得到的xml是正确的。如果您希望数据库位于不同的(空)名称空间中,可以尝试[DataContract(Namespace =&#34;&#34;)]。但我认为你展示的xml是不可能的。默认情况下,子元素不会继承其父级命名空间。您可以让他们继承父默认名称空间。你xml必须看起来像这样:

<root xmlns:blah="...">
  <element1 xmlns="whatever">
    <element2/>
  </element1>
</root>

element2现在继承了element1的命名空间