0

我有一个 WCF REST Starter Kit 服务。服务处理的类型是基类的子类。对于 POST 请求,未正确填充基类成员。

类层次结构如下所示:

[DataContract]
public class BaseTreeItem 
{
    [DataMember]
    public String Id { get; set; }
    [DataMember]
    public String Description { get; set; }
}

[DataContract]
public class Discipline : BaseTreeItem
{
    ...
}

服务定义如下所示:

[WebHelp(Comment = "Retrieve a Discipline")]
[WebGet(UriTemplate = "discipline?id={id}")]
[OperationContract]
public Discipline getDiscipline(String id)
{
    ...
}

[WebHelp(Comment = "Create/Update/Delete a Discipline")]
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "discipline")]
public WCF_Result DisciplineMaintenance(Discipline discipline)
{
    ...
}

问题:虽然 GET 工作正常(返回基类 Id 和 Description),但即使 XML 包含字段,POST 也不会填充 Id 和 Description。

示例 XML:

<?xml version="1.0" encoding="utf-8"?>
<Discipline xmlns="http://schemas.datacontract.org/2004/07/xxx.yyy.zzz">
  <DeleteFlag>7</DeleteFlag>
  <Description>2</Description>
  <Id>5</Id>
  <DisciplineName>1</DisciplineName>
  <DisciplineOwnerId>4</DisciplineOwnerId>
  <DisciplineOwnerLoginName>3</DisciplineOwnerLoginName>
</Discipline>

感谢您的任何帮助。

4

1 回答 1

0

我无法使用 DataContractSerializer 解决问题。我切换到使用 XMLSerializerFormat 并且一切正常。事实上,XMLSerializer 的功能要好得多,以至于对于纯粹的 XML 工作,在所有情况下都使用 XMLSerializer 可能会更好。

于 2010-05-20T23:57:16.187 回答