在我的OData Web API Web服务中,我正在尝试禁用除XML之外的所有格式化程序,这样无论客户端在Accept标头中发送什么,我的Web服务都将始终返回XML。我的控制器来自EntitySetController。
我认为在纯Web API Web服务中,您可以删除不需要的格式化程序,如下面的代码,但它似乎不适用于我的OData Web Api Web服务。如何让它始终返回XML?
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// remove all formatters except XML
MediaTypeFormatter xmlFormatter = config.Formatters.XmlFormatter;
config.Formatters.Clear();
config.Formatters.Add(xmlFormatter);
ODataConventionModelBuilder modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<WorkItem>("WorkItems");
IEdmModel model = modelBuilder.GetEdmModel();
config.Routes.MapODataRoute(routeName: "OData", routePrefix: "odata", model: model);
...
答案 0 :(得分:2)
我假设当你说OData和XML时,你的意思是OData XML和Atom格式。如果是这样,以下内容应该有效,
var odataFormatters = ODataMediaTypeFormatters.Create();
odataFormatters = odataFormatters.Where(
f => f.SupportedMediaTypes.Any(
m => m.MediaType == "application/xml" ||
m.MediaType == "application/atom+xml" ||
m.MediaType == "application/atomsvc+xml" ||
m.MediaType == "text/xml")).ToList();
config.Formatters.Clear();
config.Formatters.AddRange(odataFormatters);