2014-04-15 121 views
0

由于某种原因我觉得这个调用发布没有正确设置意味着消息给我我认为是说WCF中的方法没有收到InventoryRequest对象在文中?System.Runtime.Serialization.SerializationException:期望元素从名称空间

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解析?

附注:当我尝试在提琴手相同的URI POST和提琴手身体正常工作指定InventoryRequest的JSON表示...并使用JSON回来

+0

尝试找出服务器上的问题。以下是说明:http://philmunro.wordpress.com/2012/04/30/error-handling-strategies-part-1-wcf-services/,http://johannblais.blogspot.com/2009/02/handling -exceptions右路功能于wcf.html –

回答

0

尝试以这种方式:

using (var client = new HttpClient()) 
{ 
    client.BaseAddress = new Uri("http://localhost/"); 
    client.DefaultRequestHeaders.Accept.Clear(); 
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

    inventoryResponse = await client.PostAsJsonAsync("Inventory", inventoryRequest).Result.Content.ReadAsAsync<InventoryResponse>(); 
} 
相关问题