WebApi的一个Get接口在ApiPost中调试正常,在本地浏览器中打开返回的Json数据也正常,但发布到服务器后,提示以下错误:
“ObjectContent`1”类型未能序列化内容类型“application/xml; charset=utf-8”的响应正文
百度了一下,说是在WebApiConfig里加入这一句:
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
加上之后提示,用ApiPost可以正常调试,但不能用浏览器打开,出现如下错误,实在找不到解决办法,肯求各位帮忙:
找不到方法:“System.Collections.ObjectModel.Collection`1
该回答引用GPTᴼᴾᴱᴺᴬᴵ
这个问题可能是因为服务器上的浏览器不支持返回的数据类型或格式导致的。在WebApi的响应消息中,会默认设置返回的ContentType为“application/xml”,而浏览器可能不支持这种格式。所以我们需要在WebApi中将响应消息的ContentType改为“application/json”。
可以尝试在WebApiConfig.cs文件中添加以下代码:
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));
这将确保返回的数据类型为“application/json”,并将其添加到JsonFormatter支持的媒体类型列表中。如果仍然无法解决问题,您可以尝试在响应消息中显式设置ContentType为“application/json”,例如:
return Content(HttpStatusCode.OK, jsonData, "application/json");
这将使用指定的ContentType返回Json格式的数据。希望这可以解决您的问题。