从Web服务检索大量数据时代码失败

时间:2011-11-21 23:58:20

标签: c# json web-services asp.net-4.0

我有一个Web服务将一些Json内容返回给我的iPhone应用程序,只要返回的数据量很小,它就可以正常工作但是如果我增加了返回的数据量,那么应用程序将无法处理它。有没有办法解决这个问题,不可能是218KB的限制......?

这是我目前的代码:

[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;
        }
    }

如果我调用web服务抛出jQuery它也会失败,所以我猜问题是在Web服务上..

这是我用来尝试的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 个答案:

答案 0 :(得分:2)

捕获错误给了我以下信息:“字符串的长度超过了maxJsonLength属性上设置的值”。

然后我发现了这篇文章:Can I set an unlimited length for maxJsonLength in web.config?

并在我的web.config中设置以下内容:

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

问题已经解决了。

答案 1 :(得分:1)

http://msdn.microsoft.com/en-us/library/aa528822.aspx 默认情况下有限制。

<configuration>
  <system.web>
  <httpRuntime maxMessageLength="409600"
    executionTimeoutInSeconds="300"/>
  </system.web>
</configuration>