我的问题如下:
我正在使用WCF创建一个SOAP服务,我正在使用名为 Boomerang SOAP& amp;的Chrome插件测试它。 Rest Client (它通过加载你的wsdl创建一个请求,你只需要更改值)。
但每次我的datamembers都有命名空间的前缀而且我不想要它们。
请求应如下所示:
我明白了:
这是我的服务:
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中的名字属性在这里是可选的,但我拼命尝试了这一点。
你可以帮我解决这个问题吗?
非常感谢!
答案 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
的命名空间