首页 新闻 会员 周边 捐助

jquery ajax返回Internal server error 500错误怎么解决??

1
悬赏园豆:50 [已解决问题] 解决于 2015-02-05 16:45

代码如下:

$.ajax({
        type: "POST",
        contentType: "application/json",
        url: "../WebServices/WebService.asmx/GetShopCart",
        data: "{}",
        dataType: 'html',
        success: function (result)
        {
            var ret = result.d;
            $('#dRightFixBaner_Detail_Body').html(ret[0]);
            $('#dRightFixBaner_Detail_Bottom_SumCount').find('em').html(ret[1]);
            $('#dRightFixBaner_Detail_Bottom_SumMoney').html("¥"+ret[2]);
        },
        error: function (XMLHttpRequest, textStatus, errorThrown)
        {
            alert('访问网络失败!' + errorThrown);
        }

问题描述:

只有在返回内容特别多的情况下才报500错误,并且在此情况下,手动访问webservices,能够刷出结果,如下:

因此,服务端是绝对没有问题的,也调试过了,没有发现任何问题。

再次强调,只有在服务端返回内容多的情况下才报错误,正常情况下没有任何错误的。

因为后台是.net,因此我特意关注了webconfig文件,设置了最大请求为4M(当然也尝试40M...)

也参考http://blogershub.com/Archive/2013/12/Internal-server-error-500-with-ajax-json-request-or-ajax-jq#.VNMOry7fp-U设置,仍然报错。求高手!

问题补充:

服务端增加try catch,不报错,firefox调试是ok的,一般我都认为500错误就是服务端的错误,看来这次不会了,隐隐约约感觉是返回内容过大,jquery json 解析崩溃了。其实返回的内容也没多少,放到记事本里面,70kb的样子。

蓝色之猫的主页 蓝色之猫 | 菜鸟二级 | 园豆:283
提问于:2015-02-05 15:01
< >
分享
最佳答案
1

在web.config试试加上

    <system.web.extensions>
        <scripting>
            <webServices>
                <jsonSerialization maxJsonLength="#####"/>
            </webServices>
        </scripting>
    </system.web.extensions>
收获园豆:50
Yu | 专家六级 |园豆:12990 | 2015-02-05 16:37

 

第一次我尝试加了,只是位置不是在这个地方,报错,没仔细想,现在看到你的回复,死马当活马医,又加了一次,不过这一次加在末尾,没报错,保存,成功!thank you!

蓝色之猫 | 园豆:283 (菜鸟二级) | 2015-02-05 16:42

@蓝色的猫儿: 刚刚仔细想了一下,500错误看来还是服务端的问题。返回的数据太大,webservices序列化为json格式时报错,但是这个错误在webservices又无法调试出来,得在webconfig里面配置,原来如此!

蓝色之猫 | 园豆:283 (菜鸟二级) | 2015-02-05 16:49

@蓝色的猫儿: 但是为什么浏览器访问的时候又是正常的呢?因为手动访问数据不json化,直接返回字符串,看webconfig配置的信息,应该是只有通过jquery ajax脚本访问webservices的时候,返回数据会json化。

蓝色之猫 | 园豆:283 (菜鸟二级) | 2015-02-05 16:53

@蓝色的猫儿: 可以试试这样显示

 

  <system.web>
    <compilation debug="true"  />
      <customErrors mode="Off"/>
  </system.web>
    <system.webServer>
        <httpErrors errorMode="Detailed"/>
        <asp scriptErrorSentToBrowser="true"/>
    </system.webServer>
Yu | 园豆:12990 (专家六级) | 2015-02-05 16:55
其他回答(4)
0

你调试下服务端的方法。然后在看看这个内容。http://forums.asp.net/t/1936660.aspx?get+500+Internal+Server+Error+in+pass+data+with+ajax+and+

坤坤 | 园豆:919 (小虾三级) | 2015-02-05 15:11
0

你是post请求,你刷新浏览器能测试?使用Rest Client(Chrome 插件)测试下这个webService呢。

幻天芒 | 园豆:37205 (高人七级) | 2015-02-05 15:33

下了一个rest client,测试结果说明该webservices正常,有返回结果的。

支持(0) 反对(0) 蓝色之猫 | 园豆:283 (菜鸟二级) | 2015-02-05 15:41

@蓝色的猫儿: ajax保存的情况下,这个webService也正常吗?那你把你的ajax的参数干掉一下嘛。比如contentType,data,dataType,全都干掉。

支持(0) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2015-02-05 15:45

@幻天芒: contentType去掉或者修改为application/html、application/text、text/html等等均报错

毕竟任何时候浏览器都返回200 OK的。问题应该不在webservices上面。

支持(0) 反对(0) 蓝色之猫 | 园豆:283 (菜鸟二级) | 2015-02-05 15:53

@蓝色的猫儿: 你指的报错,是进入ajax的error了吗?如果是的话,贴下具体的错误信息。

支持(0) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2015-02-05 16:43
0

“再次强调,只有在服务端返回内容多的情况下才报错误,正常情况下没有任何错误的。”,当服务端数据量返回较大的情况下,trace一下服务端已经走到了哪一步,记录一下请求和应答日志。服务端方法try catch的地方最好记录一下异常日志,也有可能是web服务发生了未捕获异常。最后重启iis再试试。

JeffWong | 园豆:2328 (老鸟四级) | 2015-02-05 15:48

服务端返回数据量大的时候,调试服务器代码正常运行,并返回结果了,这与浏览器返回200 ok是对应的。另外,上传到服务器上也是如此报错,应该不是本电脑问题或者是iis的问题。

支持(0) 反对(0) 蓝色之猫 | 园豆:283 (菜鸟二级) | 2015-02-05 15:55

@蓝色的猫儿: 看你的代码:  url: "../WebServices/WebService.asmx/GetShopCart",也就是说你把web服务放在了你的应用下面,根据相对地址去访问的,改成绝对地址实验一下是否可行。如果还是不行,看看该web应用下的web.config是否配置正确,web服务可能需要特殊配置。

支持(0) 反对(0) JeffWong | 园豆:2328 (老鸟四级) | 2015-02-05 16:05
0

GET http://localhost:8080/logis/conn?cmd=drop&cid=360f417d-acbf-4bd0-a5cd-7da53caced9a&ram=0.5909123520832509 500 (Internal Server Error)..这个错跟这个是不是类似啊

limei218 | 园豆:202 (菜鸟二级) | 2016-03-09 13:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册