C# 从web服务检索大量数据时代码失败
我有一个web服务向我的iPhone应用程序返回一些Json内容,只要返回的数据量很小,它就可以正常工作,但如果我增加返回的数据量,应用程序将无法处理它。有没有办法解决这个问题,不可能是218KB的限制 这是我当前的代码: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
[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块,或者附加一个调试器,让它告诉您异常是什么。一旦您知道出了什么问题,就应该能够修复问题(代码或配置)。