我有這個WebAPI,我試圖返回xml數據到客戶端。從客戶端調用該服務時從WebAPI返回IEnumerable <XElement>,客戶端的錯誤
<?xml version="1.0" encoding="UTF-8"?>
<ArrayOfXElement xmlns="http://schemas.datacontract.org/2004/07/System.Xml.Linq" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<XElement>
<Person xmlns="">
<PersonID>1</PersonID>
<Name>b</UserName>
</Person>
</XElement>
<XElement>
<Person xmlns="">
<PersonID>2</PersonID>
<Name>b</UserName>
</Person>
</XElement>
</ArrayOfXElement>
錯誤:
$.ajax({
url: baseURL + 'GetPersons/' + $('#txtUserName2').val(),
type: "GET",
success: function (result) {
divResults.html(result);
},
error: function (xhr, status, p3, p4) {
var err = "Error " + " " + status + " " + p3;
if (xhr.responseText && xhr.responseText[0] == "{")
err = JSON.parse(xhr.responseText).message;
divResults.html(err);
}
});
{"Message":"An error has occurred.","ExceptionMessage":"The 'ObjectContent`1' type failed to serialize the response body for content type 'application/json; charset=utf-8'.","ExceptionType":"System.InvalidOperationException","StackTrace":null,"InnerException":{"Message":"An error has occurred.","ExceptionMessage":"An item with the same key has already been added.","ExceptionType":"System.ArgumentException","StackTrace":" at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)\r\n
我在做什麼錯
[HttpGet]
public IEnumerable<XElement> GetPersons(string name)
{
var doc = XDocument.Load(path);
var result = doc.Element("Persons")
.Elements("Person")
.Where(x => (string)x.Element("name") == name);
return result();
}
直接調用數據(http://localhost:63068/api/GetPersons/b
)?
您是否嘗試過在進行ajax請求之後進行調試 - 如預期的那樣是「result」的格式?你是否發送了正確的頭文件(對於xml而不是json)?你到底在哪一點得到錯誤?即哪些陳述導致了它?你是否在這段代碼附近的任何地方使用字典(或者可能是通過密鑰進行緩存,其中密鑰是名稱等)?原始的xml文檔是否形成良好? – 2013-04-22 20:37:11