Служба данных jquery wcf возвращает атом + XML вместо JSON - PullRequest
2 голосов
/ 25 марта 2011

Локально все работает нормально, но когда я развертываю службу данных wcf на сервере, ответом будет atom + xml. Я что-то упустил?

JQuery

      $(function () {
                $.ajax({                    
                    contentType: "application/json; charset=utf-8",  
                    url: "http://subdomain.domain.com/wcfdataservice.svc/surveys/",
                    dataType: "jsonp",
                    success: function (data, textStatus) {

                    },
                    error: function (data, textStatus) {

                    }
                });      

        });

wcf web.config

    <system.web>
    <compilation debug="false" targetFramework="4.0" />

<authentication mode="None"/>

</system.web>
<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
        <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </modules>
</system.webServer>
<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    <standardEndpoints>
        <webHttpEndpoint>
            <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" crossDomainScriptAccessEnabled="true" />
        </webHttpEndpoint>
    </standardEndpoints>

</system.serviceModel>

стелька

        HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Length: 13483
Content-Type: application/atom+xml;charset=utf-8
Server: Microsoft-IIS/7.5
DataServiceVersion: 2.0;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 25 Mar 2011 17:46:37 GMT

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xml:base="http://subdomain.domain.com/wcfdataservice.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
...

Ответы [ 2 ]

2 голосов
/ 25 марта 2011

Я думаю, ответ Пабло Кастро на этот вопрос - решение, которое вы ищете.

По сути, вам нужно указать в вашем запросе заголовок «accept» для «application / json», а также при необходимости использовать атрибут [JSONPSupportBehavior] в вашей службе. Я думаю, поскольку вы контролируете оба конца, все, что вам нужно, - это заголовок accept.

РЕДАКТИРОВАТЬ : Если вы изучите с помощью Fiddler ваш запрос и не увидите, что заголовок «Принять» установлен или установлен неправильно, вы можете использовать эту технику в этой статье. :

http://snipplr.com/view/9869/set-jquery-ajax-header/

Надеюсь, это поможет!

0 голосов
/ 25 января 2012

Это гораздо проще сделать с помощью WCF WebApi (превью 6). Вам нужно будет установить WCF WebApi с помощью NuGet, но оно того стоит. После того, как вы его установили, посмотрите здесь для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...