веб-сервис asmx, возвращаясь xml вместо json в .net 4.0

я только что обновил тестовую копию своего сайта на asp.net 4.0 и заметил странную проблему, которая только возникает, когда я загружаю сайт на свой сервер.

сайт имеет asmx веб-сервис, который возвращает json, все же когда я выполняю сайт на своем сервере, он возвращает xml. это, как хорошо работающий в asp.net 3.5 больше года.

webMethod украшен корректными атрибутами...

[WebMethod][ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<LocationRecentChange> RecentChanges()

и на моей локальной машине это возвращает json.

все же на сервере (Windows 2008 64bit) это возвращает xml.

использование консоли поджигателя, Вы будете видеть 200 хорошо ответ и набор XML, и на моей локальной машине, возвращенные данные являются JSON, который я ожидаю.

Вот JavaScript, который называет сервис..

function loadRecentData() {
$.ajax({
    type: "POST",
    url: "service/spots.asmx/RecentChanges",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: loadRecentUpdates,
    failure: function(msg) {
        //alert(msg);
    }
});

}

Любое приветствие предложений, этому озадачили меня!

8
задан Baldy 2 November 2011 в 22:24
поделиться

2 ответа

Вы уверены, что .NET 4 установлен на вашем сервере?

Строка "type" ScriptHandlerFactory в .NET 4 имеет следующий вид:

System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

ASP.NET 4 теперь включает это в свой web.config по умолчанию на уровне машины. Таким образом, вам не потребуется никакого отображения ScriptHandlerFactory в web.config вашего проекта, 3.5 или 4.

7
ответ дан 5 December 2019 в 18:58
поделиться

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

http://www.asp.net/%28S%28ywiyuluxr3qb2dfva1z5lgeg%29%29/learn/ajax/ tutorial-05-cs.aspx

в основном обработчик из asp.net 3.5 должен быть объявлен в разделе обработчиков web.config в system.webserver, чтобы он мог возвращать ответ JSON вместо ответа по умолчанию.

вот что вам нужно добавить в раздел обработчиков web.config (также добавьте в раздел httpHandlers , если вам нужно поддерживать IIS6) ...

<handlers>
   <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

у меня есть У меня есть подозрения, что его нужно будет заменить на версию того же обработчика .net 4.0, но пока он работает.

2
ответ дан 5 December 2019 в 18:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: