2010-06-06 8 views
8

Wydaje się, ze wszystkiego, co czytałem i oglądałem, eksponowanie JSON z usługi danych WCF powinno być tak proste, jak dodanie atrybutu JSONPSupportBehavior do klasy usług.Nie można uzyskać obsługi JSONP z usługami danych WCF

Problem polega na tym, że VS2010 nie rozpoznaje atrybutu JSONPSupportBehavior.

Czy brakuje mi numeru referencyjnego? Wygląda na to, że ze wszystkich artykułów był obsługiwany po wyjęciu z pudełka.

+0

Pobierz kod [tutaj] (http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=DataServicesJSONP&DownloadId=11208). Ten naprawdę działa! –

+0

Nie sądzę, że jest on domyślnie włączony. Zobacz ten [link] (http://code.google.com/p/dotnet-visualization-datasource/source/browse/trunk/Web+Services/WCFDataService/JSONPSupportBehavior.cs?spec=svn84&r=84), aby uzyskać przykładowy kod . – mdm20

Odpowiedz

9

Usługi WCF Data Services obsługują JSON po wyjęciu z pudełka, nie trzeba dodawać atrybutów ani niczego.

Aby otrzymać odpowiedź w formacie JSON, należy użyć standardowej negocjacji typu zawartości HTTP.

W szczególności muszą zawierać application/json w nagłówku żądania accept.

Istnieją przykłady w tej sekcji OData protocol documentation.

Poniższe przykłady pokazują nieprzetworzone żądania HTTP. Różne interfejsy API HTTP klienta mają różne mechanizmy do określania nagłówków żądań.

Atrybut JSONPSupportBehavior jest przykładem rozszerzenie, które pozwala klientom korzystać z opcji ciągu kwerendy URL (tj $format=json) oprócz zawartości typu negocjacji, a także dodaje wsparcie dla „jsonp” (tj $callback=[function-name]).

Są przydatne w sytuacjach, w których nie kontrolujesz nagłówków, na przykład podczas uzyskiwania dostępu między domenami za pomocą znaczników skryptów.

Jeśli chcesz użyć JSONPSupportBehavior można go uzyskać tutaj:

http://code.msdn.microsoft.com/DataServicesJSONP

+0

Tak, byłam na łączu, który podałeś, ale przegapiłeś link do pobrania, który zawierał plik klasy. Dzięki – SevilNatas

0

WCF nie tylko suppors JSON out-of-the-box, ale również wspiera jsonp out-of-the- pole, jeśli używasz WCF WebApi (podgląd 6). Wejdź w VS 2010 z NuGet. Po zainstalowaniu spójrz na numer here, aby uzyskać więcej informacji.

2

Nowsze wersje WCF Data Services wsparcia JSON domyślnie i trzeba mieć

Accept: application/json;odata=verbose 

w nagłówku żądania.

Accept: application/json 

nie jest już wystarczająca. Więcej informacji: here.

Powiązane problemy