2011-07-23 5 views
2

Есть ли простой способ заставить JSONP работать с новыми службами WCF Web API?C# WCF Web API + JSONP

Я попытался это не повезло

<standardEndpoints> 
    <webHttpEndpoint> 
    <standardEndpoint name="" 
         helpEnabled="true" 
         automaticFormatSelectionEnabled="true" 
         defaultOutgoingResponseFormat ="Json" 
         crossDomainScriptAccessEnabled="true"/> 
    </webHttpEndpoint> 
</standardEndpoints> 

ответ

2

https://alexanderzeitler.com/articles/Look-Ma,-I-can-handle-JSONP-%28aka-Cross-Domain-JSON%29-with-WCF-Web-API-and-jQuery!/

Update: Последние WCF Web API бит поставляется с интегрированной поддержкой JSONP, тогда как использование практически аналогичен способом, описанным в приведенной выше ссылке.

+0

Ссылка изменилась на: https://alexanderzeitler.com/articles/Look-Ma,-I-can-handle-JSON P-% 28aka-Cross-Domain-JSON% 29-with-WCF-Web-API-and-jQuery!/ – ForOhFor

+0

@ForOhFor Спасибо за напоминание - обновлена ​​ссылка –

1

Просто хотел предоставить более подробную информацию о поддержке WCF WebAPI для JSONP. Мне было очень трудно найти эту информацию, поэтому, возможно, это поможет кому-то еще ...

This thread над WCF CodePlex имеет описание Даниэля Рот о том, как использовать межсетевые JSON-запросы WebApi (aka JSONP) используя jQuery.

Образцы «образца» он может быть найден в репозитории WCF CodePlex here. Он находится в папке «по умолчанию».

Кроме того, убедитесь, что вы устанавливаете WebApiEnhancements for Preview 6 с помощью NuGet, иначе все это не будет работать.

Вы будете нуждаться в Global.asax.cs с чем-то вроде следующего ...

public class Global : System.Web.HttpApplication 
{ 
    protected void Application_Start() 
    { 
     var config = new WebApiConfiguration() { EnableTestClient = true }; 
     RouteTable.Routes.MapServiceRoute<HelloWorldApi>("api", config); 
    } 
} 

Другой ключ к ответу за «расширение» в шаблоне URI ...

[WebGet(UriTemplate="hello{ext}")] 

Затем вы делаете ваш Jquery называть, как это ...

$.getJSON("/api/hello.jsonp?callback=?", function (data) { 
    $("div").html(data); 
});