无法序列化内容类型'application / xml的响应正文;字符集= UTF-8'

时间:2016-09-23 14:15:12

标签: http asp.net-web-api

我有一个相当简单的控制器。我的错误是'application / xml',不像重定向到我的问题是'application / json'。

public class ProductController : ApiController
{
        private IProductService productservice = new ProductServices();

        public List<Employee> Get()
        {
            return productservice.GetProducts();
        }
    }
}

但我仍然收到以下错误。

  

'ObjectContent`1'类型无法序列化内容类型'application / xml的响应主体;字符集= UTF-8' 。

我尝试过以下无法解决的问题。

  1. 在WebApiConfig.cs

    中添加了此内容
    var json = config.Formatters.JsonFormatter;
    json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
    config.Formatters.Remove(config.Formatters.XmlFormatter);
    
  2. 在Global.asax.cs中添加此内容

    GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
    GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Serialize;
    

1 个答案:

答案 0 :(得分:0)

  1. 从WebApiConfig.cs中删除
  2.   

    var json = config.Formatters.JsonFormatter;   json.SerializerSettings.PreserveReferencesHandling =   Newtonsoft.Json.PreserveReferencesHandling.Objects;   config.Formatters.Remove(config.Formatters.XmlFormatter);

    然后粘贴下一个代码:

    var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().First();
    jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
    

    并放弃对Global.asax.cs的更改