C# 从web服务检索大量数据时代码失败

C# 从web服务检索大量数据时代码失败,c#,json,web-services,asp.net-4.0,C#,Json,Web Services,Asp.net 4.0,我有一个web服务向我的iPhone应用程序返回一些Json内容,只要返回的数据量很小,它就可以正常工作,但如果我增加返回的数据量,应用程序将无法处理它。有没有办法解决这个问题,不可能是218KB的限制 这是我当前的代码: [WebService(Namespace = "http://mydomain.com/webservicesfeed")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.Comp

我有一个web服务向我的iPhone应用程序返回一些Json内容,只要返回的数据量很小,它就可以正常工作,但如果我增加返回的数据量,应用程序将无法处理它。有没有办法解决这个问题,不可能是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;
        }
    }
[WebService(命名空间=”http://mydomain.com/webservicesfeed")]
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
//要允许使用ASP.NET AJAX从脚本调用此Web服务,请取消注释以下行。
[System.Web.Script.Services.ScriptService]
公共类feedPerson:System.Web.Services.WebService
{
[WebMethod(BufferResponse=false)]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
公共列表getData()
{
List res=新列表();
res=搜索人(“32.8762”、“13.1875”);
返回res;
}
}
如果我调用web服务throw 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>

$.ajax({
类型:“POST”,
contentType:“应用程序/json;字符集=utf-8;”,
url:“http://mydomain.com/feedPerson.asmx/getData",
数据类型:“json”,
成功:函数(数据、文本状态、jqXHR){
警报(数据d[0]);
},
错误:函数(jqXHR、textStatus、errorshown){
警报(“失败”);
}
});
如何解决这个问题?

默认情况下是有限制的

<configuration> <system.web> <httpRuntime maxMessageLength="409600" executionTimeoutInSeconds="300"/> </system.web> </configuration>
捕捉到错误后,我得到了以下信息:“字符串的长度超过了maxJsonLength属性上设置的值”

然后我发现了这个帖子:

通过在my web.config中设置以下内容:

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


问题已经解决。

您是否在web服务中设置了断点?有人打电话吗?搜索者返回多少人?您是否可以使用web浏览器向服务发出get请求,以查看您得到了什么?你的218k号码来自哪里?@DarrylBraaten没有断点,它被调用,100人可以,但150人不行,如果我通过浏览器访问,它返回一个包含所有人的xml文件(150人没有问题),218k是返回的xml文件的大小。失败的原因是什么?服务器或客户端是否引发错误或异常?@PhilippSchmid我猜是服务器引发的,因为iPhone应用程序和jquery的响应相同。请求:{“消息”:“处理请求时出错。”,“StackTrace”:“ExceptionType”:“}您有权访问服务器吗?您是否在事件日志中看到任何可以告诉您出了什么问题的内容?或者更好,在服务器代码周围设置一个try/catch块,或者附加一个调试器,让它告诉您异常是什么。一旦您知道出了什么问题,就应该能够修复问题(代码或配置)。