WCF REST Starter Kit не заполняет членов базового класса на POST - PullRequest
0 голосов
/ 19 мая 2010

У меня есть сервис стартового комплекта WCF REST. Тип, обрабатываемый службой, является подклассом базового класса. Для запросов 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 работает нормально (возвращает идентификатор и описание базового класса), POST не заполняет идентификатор и описание, даже если XML содержит поля.

Пример 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>

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 21 мая 2010

Я не смог решить проблему с помощью DataContractSerializer. Я перешел на использование XMLSerializerFormat и все работало нормально. На самом деле возможности XMLSerializer настолько лучше, что для работы исключительно с XML, вероятно, лучше использовать XMLSerializer во всех случаях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...