3

细节:

接口契约:

[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/ …

请指教。

4

2 回答 2

3

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

[OperationContract]
[WebGet(UriTemplate = "test")]
[XmlSerializerFormat]
TestType TestOperation();
于 2013-08-15T15:57:22.430 回答
0

如果这是 WCF 服务,则默认使用数据协定序列化程序。尝试使用数据契约属性来装饰你的类:

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

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

于 2013-08-15T15:55:33.193 回答