0

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 は正常に機能しますが (基本クラスの ID と説明を返します)、XML にフィールドが含まれていても、POST は Id と説明を入力しません。

サンプル 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 に答える