WEB API HttpResponseMessage返回JSONP

时间:2014-12-23 09:40:46

标签: c# .net asp.net-web-api jsonp

我使用以下方法创建一个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

传输

我正在返回的消息不是空的或空的,因此我很困惑为什么它会以这种方式运行。

1 个答案:

答案 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