2014-04-15 193 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>(); 
} 
相關問題