2017-06-02 69 views
0

我的问题前缀是:删除命名空间在datacontract

我使用WCF创建SOAP服务,我使用的是被称为回旋镖SOAP & REST客户端铬插件测试(它创建请求通过加载你的wsdl,你只需要改变值)。

但是,每次我的datammbers都有名称空间的前缀,我不想要它们。

的要求应该是这样的:

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中的我的名字属性是optionnal,但我拼命尝试这个。

你能帮我解决这个问题吗?

非常感谢!

回答

0

您的DataContract属性指定名称空间值“http://my.company.com”,因此您得到的xml是正确的。如果您希望数据成员位于不同的(空)名称空间中,则可以尝试[DataContract(Namespace =“”)]。但我认为你展示的xml是你想要的样子,这是不可能的。子元素在默认情况下不会继承父项名称空间。你可以让他们继承父母默认的命名空间。然后,XML必须是这样的:

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

element2现在继承element1的命名空间

+0

也恰好碰到了这一点: https://social.msdn.microsoft.com/Forums/vstudio/en-US/66c19783-6675-4bd7-83c1-2140d00a943e/understanding-namespace-for-servicecontract-servicebehavior-datacontract?forum = wcf 从我看到它对他有用,但它似乎是他的回应,我认为我们可以通过一些配置获得相同的请求,也许。 – mJehanno