.Net Rest Web Service响应具有默认的Data Contract名称空间而不是预期的名称空间

时间:2013-08-15 15:53:37

标签: c# .net wcf xml-serialization datacontract

详细说明:

接口合同:

[OperationContract]
[WebGet(UriTemplate = "test")]
TestType TestOperation();

类型定义:

[System.Xml.Serialization.XmlRoot(ElementName = "Test", Namespace="http://test.net/", IsNullable=false)]
public partial class TestType {

实际结果:

<TestType xmlns=http://schemas.datacontract.org/2004/07/ …

预期结果:

<Test xmlns= http://test.net/ …

请告知。

2 个答案:

答案 0 :(得分:3)

该服务使用DataContractSerializer来序列化响应,因此需要数据协定命名空间。为了覆盖它,我建议将XmlSerialzeFormat属性应用于操作,如下所示......

[OperationContract]
[WebGet(UriTemplate = "test")]
[XmlSerializerFormat]
TestType TestOperation();

答案 1 :(得分:0)

如果这是WCF服务,则默认使用data contract serializers。请尝试使用data contract属性来装饰您的班级:

[DataContract(Name = "Test", Namespace="http://test.net/")]
public partial class TestType {

注意:您还需要将DataMember属性添加到要序列化的每个字段或属性。