我使用以下方法创建一个HttpResponseMessage对象并通过我的Web API项目返回它:
public HttpResponseMessage CreateHttpResponseMessage(string message, HttpStatusCode httpStatusCode)
{
var stringContent = new StringContent(message, new UTF8Encoding(), "application/javascript");
return new HttpResponseMessage(httpStatusCode)
{
Content = stringContent
};
}
我正在使用它来返回一个jsonp有效负载,但它继续返回内容类型text / plain而不是application / javascript。这导致浏览器控制台记录此警告:
资源被解释为脚本但以MIME类型text / plain
传输
我正在返回的消息不是空的或空的,因此我很困惑为什么它会以这种方式运行。
答案 0 :(得分:1)
当您尝试返回时,您无法将JSONP
作为纯文本返回。
您需要将Web API配置为使用JSONP
MediaTypeFormatter
。这种格式化程序在 WebApiContrib 中提供。
Install-Package WebApiContrib.Formatting.Jsonp
添加到Application_Start
:
GlobalConfiguration.Configuration.Formatters.Insert(0, new JsonpMediaTypeFormatter(new JsonMediaTypeFormatter()));
资源:
http://stevenhollidge.blogspot.in/2013/03/how-to-return-jsonp-from-webapi.html
http://www.codeproject.com/Tips/631685/JSONP-in-ASP-NET-Web-API-Quick-Get-Started