2014-12-23 3 views
0

Я использую следующий метод для создания объекта HttpResponseMessage и вернуть его через мой веб-проект API:WEB API HttpResponseMessage вернуть JSONP

public HttpResponseMessage CreateHttpResponseMessage(string message, HttpStatusCode httpStatusCode) 
{ 
    var stringContent = new StringContent(message, new UTF8Encoding(), "application/javascript"); 
    return new HttpResponseMessage(httpStatusCode) 
     { 
      Content = stringContent 
     }; 
} 

Я использую для возврата полезной нагрузки JSONP однако он продолжает возвращаться с содержанием введите текст/plain, а не приложение/javascript. Это вызывает консоль браузера зарегистрирует это предупреждение:

Ресурс интерпретируется как сценарий, но передается с MIME тип текста/простой

сообщение Я возвращаюсь не является нулевым или пустым, и поэтому я «Я смущен, почему он ведет себя таким образом.

ответ

1

Вы не можете вернуть JSONP как обычный текст, который вы пытаетесь вернуть.

Вам необходимо настроить свой веб-API для использования JSONPMediaTypeFormatter. Такой форматтер предлагается в 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