сбой кода при получении большого объема данных из веб-службы - PullRequest
1 голос
/ 22 ноября 2011

У меня есть веб-сервис, возвращающий некоторые данные Json в мое приложение для iPhone, и он работает нормально, если объем возвращаемых данных невелик, но если я увеличу объем возвращаемых данных, приложение не сможет обработать Это. Есть ли способ решить эту проблему, не может быть ограничение в 218 КБ ...?

Это мой текущий код:

[WebService(Namespace = "http://mydomain.com/webservicesfeed")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
[System.Web.Script.Services.ScriptService]

    public class feedPerson : System.Web.Services.WebService
    {

        [WebMethod(BufferResponse = false)]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public List<Person> getData()
        {
            List<Person> res = new List<Person>();
                res = searchPerson("32.8762", "13.1875");
            return res;
        }
    }

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

Это код jQuery, который я использовал для его тестирования:

 <script type="text/javascript">
     $.ajax({
         type: "POST",
         contentType: "application/json; charset=utf-8;",
         url: "http://mydomain.com/feedPerson.asmx/getData",
         dataType: "json",
         success: function (data, textStatus, jqXHR) {
             alert(data.d[0]);
         },
         error: function (jqXHR, textStatus, errorThrown) {
             alert("Fail");
         }
     });
    </script>

Как это можно решить?

Ответы [ 2 ]

2 голосов
/ 22 ноября 2011

При обнаружении ошибки я получил следующую информацию: «Длина строки превышает значение, установленное в свойстве maxJsonLength».

Тогда я нашел этот пост: Можно ли установить неограниченную длину для maxJsonLength в web.config?

и установив следующее в моем web.config:

<system.web.extensions>
    <scripting>
        <webServices>
            <jsonSerialization maxJsonLength="2147483647"/>
        </webServices>
    </scripting>
</system.web.extensions>

Проблема была решена.

1 голос
/ 22 ноября 2011

http://msdn.microsoft.com/en-us/library/aa528822.aspx Есть ограничения по умолчанию.

<configuration>
  <system.web>
  <httpRuntime maxMessageLength="409600"
    executionTimeoutInSeconds="300"/>
  </system.web>
</configuration>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...