【发布时间】:2012-04-11 11:35:36
【问题描述】:
我正在尝试将 JSON 发布到 WCF 服务。 json 对象包含一个属性和一个数组。问题是当请求到达服务器时 TripleTransaction 始终为空。我想知道如何正确绑定到我的数据合同。如果有人可以在这里给我指点,我将不胜感激。
这是我的服务接口的样子:
[OperationContract]
[CorsBehavior]
[WebInvoke(Method = "POST", UriTemplate = "Triples/{library}", ResponseFormat = WebMessageFormat.Json)]
ResultMessage InvokeGraphTransactions(string library, TripleTransaction tripleTransaction);
我正在尝试使用已发布的 JSON 填充 TripleTransaction。 TripleTransaction 包含一个 TripleModel 列表。
[DataContract]
public class TripleTransaction
{
[DataMember]
public string Localization { get; set; }
[DataMember]
public List<TripleModel> Transactions { get; set; }
}
[DataContract]
public class TripleModel
{
[DataMember]
public int TransactionType { get; set; }
[DataMember]
public string SubjectLocalPart { get; set; }
[DataMember]
public string PredicateLocalPart { get; set; }
[DataMember]
public string ObjectPart { get; set; }
[DataMember]
public string Update { get; set; }
}
上述数据合约的建模类似于 POSTed JSON。使用 FireBug 我可以看到请求看起来是正确的。 JSON 在消息负载中,请求头有一个 contentType:application/json
这是我尝试发送的 json 示例:
{
"tripleTransaction": {
"Localization": "en-us",
"Transactions": [
{
"TransactionType": 0,
"SubjectLocalPart": "testSubject",
"PredicateLocalPart": "testPredicate",
"ObjectPart": "1",
"Update": "2"
},
{
"TransactionType": 1,
"SubjectLocalPart": "testSubject",
"PredicateLocalPart": "testPredicate",
"ObjectPart": "1"
}
]
}
}
【问题讨论】:
-
已知类型?但我不确定休息服务是否需要它
标签: c# wcf web-services rest wcf-binding