Это проблема, которую мы видели в других местах, с несколькими потенциальными решениями, но мы не можем заставить их работать.
У нас есть набор веб-сервисов ASP.netдо возврата результатов в формате JSON.Мы используем JQuery $ .post для получения результатов (но это почти наверняка не является частью проблемы.) Когда результаты поступают на стороне клиента, они оборачиваются в теги XML.Итак, вместо того, чтобы возвращаться так:
<?xml version="1.0" encoding="utf-8"?>
{data}
... они возвращаются вот так ...
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="[SomeURL.com]">{data}</string>
В процессе тестирования мы обнаружили, что значение по умолчанию вASP.net 3.5 для результатов веб-сервиса был JSON, но в ASP.net 4.0 это было изменено на XML.
Чтобы попытаться проверить это, мы загрузили тестовое приложение веб-службы ASP.net 3.5 и локально этот вывод в формате JSON, как и ожидалось.Затем мы обновили приложение до 4.0, ожидая, что он начнет выводиться в формате XML.Однако локально он продолжал выводить в виде JSON без внешних тегов.
Затем мы переместили это тестовое приложение на наш сервер IIS 7.0 и сразу начали выводить в виде XML.Это означало, что проблема была связана с настройками в IIS по сравнению с локальными настройками.
Затем мы нашли этот пост:
веб-служба asmx, возвращающая xml вместо json в .net 4.0
... и попытался заменить обработчик сценариев 4.0 через web.config на версию 3.5.Однако это тоже не работает.После внесения изменений в файл web.config в области сопоставлений обработчиков IIS появилось следующее:
ScriptHandlerFactory - версия 3.5.ScriptHandlerFactoryAppServices-Integrated-4.0 - версия 4.0.
... но также ...
WebServiceHandlerFactory-Integrated - версия 2.0WebServiceHandlerFactory-Integrated-4.0 - версия 4.0WebServiceHandlerFactory-ISAPI-2,0WebServiceHandlerFactory-ISAPI-2.0-64WebServiceHandlerFactory-ISAPI-4.0_32bitWebServiceHandlerFactory-ISAPI-4.0_64bit
Итак ... вот где мы - возиться с настройками IIS, чтобы попытаться заставить веб-сервис отправлять как JSON.Мы уверены, что это настройка IIS или, по крайней мере, настройка ASP.net 4.0 против 3.5.
В качестве фона веб-служба ASP.net выглядит следующим образом:
<System.Web.Script.Services.ScriptService(Namespace:="[SomeURL.com]")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class RequestM
Inherits System.Web.Services.WebService
<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json, UseHttpGet:=False, XMLSerializeString:=False)> _
Public Function dataRequestJSON(ByVal JsonRequestObject As String) As String
Try
Dim MyNewDataRequest As New DataRequest(JsonRequestObject)
Dim MyJsonResponse = MyNewDataRequest.JsonResponse
Return MyJsonResponse
Catch ex As Exception
Return ex.Message
End Try
End Function
Пожалуйста, помогите!
Спасибо!