C# 接收 java webservices接口返回的Byte[] 数组时,大于90M报错System.OutOfMemoryException 求高手解答

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 接收 java webservices接口返回的Byte[] 数组时,大于90M报错System.OutOfMemoryException 求高手解答相关的知识,希望对你有一定的参考价值。

捕捉到 System.OutOfMemoryException
HResult=-2147024882
Message=引发类型为“System.OutOfMemoryException”的异常。
Source=mscorlib
StackTrace:
在 System.Text.StringBuilder.set_Length(Int32 value)
在 System.Xml.XmlTextReaderImpl.ParseText()
在 System.Xml.XmlTextReaderImpl.ParseElementContent()
在 System.Xml.XmlTextReaderImpl.Read()
在 System.Xml.XmlTextReader.Read()
在 System.Xml.XmlTextReaderImpl.InitReadElementContentAsBinary()
在 System.Xml.XmlTextReaderImpl.ReadElementContentAsBase64(Byte[] buffer, Int32 index, Int32 count)
在 System.Xml.XmlTextReader.ReadElementContentAsBase64(Byte[] buffer, Int32 index, Int32 count)
在 System.Xml.Serialization.XmlSerializationReader.ReadByteArray(Boolean isBase64)
在 System.Xml.Serialization.XmlSerializationReader.ToByteArrayBase64(Boolean isNull)
在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderLWFDService.Read15_getGRIB2DataResponse()
在 Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer15.Deserialize(XmlSerializationReader reader)
在 System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
在 System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)

                BasicHttpBinding bind = new System.ServiceModel.BasicHttpBinding(BasicHttpSecurityMode.None);
                bind.AllowCookies = true;
                bind.OpenTimeout = new TimeSpan(0, 0, 60);
                bind.CloseTimeout = new TimeSpan(0, 0, 60);
                bind.SendTimeout = new TimeSpan(0, 0, 300);
                bind.ReceiveTimeout = new TimeSpan(0, 0, 300);
                bind.MaxReceivedMessageSize = int.MaxValue;//这几个属性设置一下,或者你可以设置为long.MaxValue
                bind.ReaderQuotas.MaxStringContentLength = int.MaxValue;//这几个属性设置一下
                bind.ReaderQuotas.MaxDepth = int.MaxValue;//这几个属性设置一下
                bind.ReaderQuotas.MaxNameTableCharCount = int.MaxValue;//这几个属性设置一下
                EndpointAddress address = new EndpointAddress(url);

                //像下面这样实例化你的C# webservice代理类
                 YourProxyClient svcClient = new YourProxyClient(bind, address);追问

我的webservice接口类里没有(bind, address)实例化传这两个参数的构造方法。

追答

那是因为你添加服务引用的方式不对

追问

我就是这样添加的。

追答

不能吧,我每次都有啊,不管是调用的C#还是Java的websevice都能生成这样的代理类。

参考技术A 你这个不能一次系读取,要分段或分包读取!!追问

但是webservices接口就是一次返回所有的BYTE[] 数组,怎么分段读取呢?

以上是关于C# 接收 java webservices接口返回的Byte[] 数组时,大于90M报错System.OutOfMemoryException 求高手解答的主要内容,如果未能解决你的问题,请参考以下文章

C# 调用java webservice 接口

php调用webservice接口,java代码接收不到参数

java调用c#的webservice,如何传递DateTime

c# WebService 接收参数 急!!!急!!!

C# winForm添加webservice接口

C# 调用Java的WebService(返回json格式数据),老是返回null, 求解!