【发布时间】:2014-04-15 04:50:27
【问题描述】:
由于某种原因,我觉得这个对 post 的调用没有正确设置,这意味着给我的消息是我认为 WCF 中的方法没有在 POST 中接收到 InventoryRequest 对象?
var inventoryRequest = new InventoryRequest
{
memberID = "1",
Inventories = _inventories.ToArray()
};
//Act
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost/Inventory");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
inventoryResponse = await client.PostAsJsonAsync("", inventoryRequest).Result.Content.ReadAsAsync<InventoryResponse>();
}
我在我的 MSTest 中收到此错误:
System.Runtime.Serialization.SerializationException: Error in line 1 position 70. Expecting element 'InventoryResponse' from namespace 'http://schemas.datacontract.org/2004/07/Responses'.. Encountered 'Element' with name
'Fault', namespace 'http://schemas.microsoft.com/ws/2005/05/envelope/none'.
at System.Runtime.Serialization.DataContractSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
at System.Runtime.Serialization.DataContractSerializer.ReadObject(XmlReader reader)
还有一点很奇怪,它在谈论上面的 xml 阅读器。我将 json 指定为内容类型,为什么它试图用 xml 解析?
旁注:当我在 Fiddler 中尝试 POST 到相同的 uri 并在提琴手主体中指定 InventoryRequest 的 json 表示时,它工作正常......并返回 json
【问题讨论】:
-
尝试找出服务器上的问题。以下是说明:philmunro.wordpress.com/2012/04/30/…,johannblais.blogspot.com/2009/02/…
标签: c# wcf httpclient