Asp.net web api有时会将内容类型返回为text / plain

时间:2016-06-28 19:11:32

标签: asp.net asp.net-mvc asp.net-web-api asp.net-web-api2

我正在使用ASP.NET web api。我理解响应取决于content-type标头。我问这个问题,假设客户总是发送content-type as application/json。正如本SO post中所述,我使用以下行返回JSON作为默认响应。

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html") );

到目前为止,我的所有控制器都返回了动态响应&数据以JSON格式返回。

    [Route("employee/division")]
    [HttpPost]
    public dynamic GetEmployeeData(FilterModel filter)
    {
         //getData returns a POCO
         var data = getData();
         //This will return valid json response to client
         return data;
    }

最近,我添加了另一个返回HttpResponseMessage的端点。

    [HttpGet]
    [Route("employee/update")]
    public HttpResponseMessage Update()
    {
         ...........
          //return the response
            var msg = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent("Info updated !!")
            };

            return msg;

    }

问题是,在这种情况下,响应以字符串形式返回。响应标头中的Content-Type如下所示。 "content-type": "text/plain; charset=utf-8",

我有以下问题:

  1. 当我采用不同的方法时,为什么会得到不同类型的回应?
  2. 接近没有。 1正在工作,是返回JSON响应的正确方法。
  3. 由于我想设置不同的响应代码,我决定使用方法二。这种方法有什么缺点吗?如何使用这种方法返回JSON?

0 个答案:

没有答案