C# webservie 传递一个大型byte数据,服务报错
C#webservie传递一个大型byte数据(几十M),服务报错System.ServiceModel.CommunicationException:接收对h**p:/...
C# webservie 传递一个大型byte数据(几十M),服务报错
System.ServiceModel.CommunicationException: 接收对 h**p://****:6941/UploadData.asmx 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致。有关详细信息,请参见服务器日志。 ---> System.Net.WebException: 基础连接已经关闭: 接收时发生错误。 ---> System.IO.IOException: 无法从传输连接中读取数据: 您的主机中的软件中止了一个已建立的连接。。 ---> System.Net.Sockets.SocketException: 您的主机中的软件中止了一个已建立的连接。
在 System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
--- 内部异常堆栈跟踪的结尾 ---
在 System.Net.ConnectStream.Read(Byte[] buffer, Int32 offset, Int32 size)
在 System.Net.HttpWebRequest.MakeMemoryStream(Stream stream)
--- 内部异常堆栈跟踪的结尾 ---
在 System.Net.HttpWebRequest.GetResponse()
在 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
--- 内部异常堆栈跟踪的结尾 ---
//调用webservice,数据处理接口,这里是循环调用这个方法的
//reciveData这个就是要传递的byte数据
var ClientData = new UpdateData.UploadDataSoapClient();
string info = ClientData.UploadDataFile(reciveData, PROCTYPE, i); 展开
System.ServiceModel.CommunicationException: 接收对 h**p://****:6941/UploadData.asmx 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致。有关详细信息,请参见服务器日志。 ---> System.Net.WebException: 基础连接已经关闭: 接收时发生错误。 ---> System.IO.IOException: 无法从传输连接中读取数据: 您的主机中的软件中止了一个已建立的连接。。 ---> System.Net.Sockets.SocketException: 您的主机中的软件中止了一个已建立的连接。
在 System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
--- 内部异常堆栈跟踪的结尾 ---
在 System.Net.ConnectStream.Read(Byte[] buffer, Int32 offset, Int32 size)
在 System.Net.HttpWebRequest.MakeMemoryStream(Stream stream)
--- 内部异常堆栈跟踪的结尾 ---
在 System.Net.HttpWebRequest.GetResponse()
在 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
--- 内部异常堆栈跟踪的结尾 ---
//调用webservice,数据处理接口,这里是循环调用这个方法的
//reciveData这个就是要传递的byte数据
var ClientData = new UpdateData.UploadDataSoapClient();
string info = ClientData.UploadDataFile(reciveData, PROCTYPE, i); 展开
展开全部
我遇到过这类问题vxbg原因应该是你的update语句。你的sql语句的update 某列= 某值a本来是正确的40但是如果用来修改二进制数据就不行gko你可以修改成参数形式的sql语句例如:update [表名] set [列名] = @param1 where 敏滚[列名] = 某值SqlParameter[] parameters = { new SqlParameter("@Image"28 SqlDbType.Image)};原因是存储的数据类型是byte型imqu普通的方桥郑余式保存维数型数据无法完整保存到数据库。所以必须采用参数方式。在举个例子:url传递值,没有见过传递数组丛告的。可以尝试使用Image数据类型保存数据
追问
这里还没用到数据库操作,只是读取
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用代理类也这样?确定是由于大数据量引发的吗?(就是小数据量时不会报错)
更多追问追答
追问
小数据 不会有问题, 前面两个文件都很小,第三个文件就很大了 一下子就报错了
追答
Byte[]在XML里,应该是每一位都会有一个TargetName吧,要不换一种传输方法,将Byte[]按16进制输出成String,这样传能减少很多文本量,可以试试看
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就服务器给出的错误提示,可能原因如下:
1. h**p:/启派/****:6941/UploadData.asmx 的服务断开了
2. 基础连接已经关闭
检查如下:
1. 在IE直接打开这个服务地茄旁弯址
2. 如果能打开,用数据测试下能否成功
3. 如果成功,那颤闷么请检查你在程序中所传递的byte数据,看是否符合web服务的参数规则
1. h**p:/启派/****:6941/UploadData.asmx 的服务断开了
2. 基础连接已经关闭
检查如下:
1. 在IE直接打开这个服务地茄旁弯址
2. 如果能打开,用数据测试下能否成功
3. 如果成功,那颤闷么请检查你在程序中所传递的byte数据,看是否符合web服务的参数规则
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
亲,会不会是你引用服务有问题,,,导致端口根本就没打开过,,,
追问
都已经接受了几个小数据的内容了,一到大数据就报错了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询