有你在真好 的个人博客
二次封装webservice返回数据量过大导致的错误
阅读:2186 添加日期:2021/3/27 23:24:05 原文链接:https://www.toutiao.com/item/6457290748168503822/

前段时间朋友有个项目,第三方用webservice提供的接口,其中一个是返回数据列表的接口,返回的数据量比较大,在直接调用webservice时并没有任何问题。

但通过C# ashx对webservice接口进行二次封装,提取返回的json格式数据后,返回了主要内容为:

error in deserializing body of reply message

的错误提示。

经对接口进行跟踪调试发现,返回的数据并不全,导致格式出错出现上述错误。

因为C#默认限制了数据传传输的最大长度,超出这个限制的时候就会出现上述错误。返回那么大的数据量APP端也受不了啊,也不知道提供接口的是怎么想的!

出现这种问题,可以修改web.config,注意加粗部分(具体数值根据实际情况调整)

<bindings>

<basicHttpBinding>

<binding name="BasicBinding"

closeTimeout="00:01:00"

openTimeout="00:01:00"

receiveTimeout="00:10:00"

sendTimeout="00:01:00"

allowCookies="false"

bypassProxyOnLocal="false"

hostNameComparisonMode="StrongWildcard"

maxBufferSize="999999"

maxBufferPoolSize="999999"

//对Web层的传递数据量,解决了从服务器通过webservice(wcf)下载大容量数据的问题

maxReceivedMessageSize="999999"

messageEncoding="Text"

textEncoding="utf-8"

transferMode="Buffered"

useDefaultWebProxy="true">

<readerQuotas

maxDepth="999999"

maxStringContentLength="999999"

maxArrayLength="999999"

maxBytesPerRead="999999"

maxNameTableCharCount="999999" />

<security mode="None" />

</binding>

</basicHttpBinding>

</bindings>

虽然可以解决此类问题,但是对于返回大数据量的接口,建议加上页索引和页大写参数分页获取以提高效率。

ICP备案号:苏ICP备14035786号-1 苏公网安备 32050502001014号