WebAPI正在忽略傳入請求上的Accept:標頭,並且似乎總是將我的POCO對象序列化爲JSON。我使用WizTools RestClient測試API調用,並設置請求的HTTP標頭:爲什麼WebAPI不會將我的POCO作爲XML返回?
GET /api/people/evh123
Accept: application/xml
如果我修改我的控制器返回string[]
或其他一些本機類型,我得到XML預期。我見過幾個人建議增加這一行我Application_Start()
方法:
GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true;
但對我來說這並沒有什麼不同。
我的API控制器:
using System.Web.Http;
using Spyglass.Api.Entities;
namespace Spyglass.Api.Controllers {
public class PeopleController : ApiController {
public Person Get(string personId) {
var member = new Person(personId) { FullName = "Eddie van Halen" };
return (member);
}
}
}
我的路由配置:
using System.Web.Http;
namespace Spyglass.Api {
public static class WebApiConfig {
public static void Register(HttpConfiguration config) {
config.Routes.MapHttpRoute(
name: "PeopleApi",
routeTemplate: "api/people/{personId}/{controller}/{id}",
defaults: new {id = RouteParameter.Optional, controller = "People"}
);
}
}
}
我的POCO:
namespace Spyglass.Api.Entities {
public class Person {
public string PersonId { get; set; }
public string FullName { get; set; }
public Person(string personId) {
this.PersonId = personId;
}
}
}
我缺少某種自定義序列化的配置爲我的POCO?沒有任何通常會導致XML序列化程序頭痛的循環引用或複雜類型......任何想法?
下面的答案可能是正確的(即構造函數);然而,我想指出這個答案,其中涵蓋了其他潛在的問題,並建議修補其他人可能會出現http://stackoverflow.com/questions/11804301/webapi-not-returning-xml-even-with-correct-accepts - 標題 – 2013-03-05 20:54:38