VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
12
返回列表 发新帖
楼主: jo_fox

如何向web service里的方法传递一个对象类型的参数,请指教!

[复制链接]

0

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2021-4-23 13:00:02 | 显示全部楼层
最简单的办法把对象数组用2进制序列化成byte[]
然后webservice端反序列化成想要的对象数组,调用结束后再序列化成byte[]返回,客户端再反序列化得到结果
[WebMethod]
public byte[] WebInvoke( byte[] data )
{
}


public class Serializer
{

private BinaryFormatter bf;

public Serializer()
{
this.bf = new BinaryFormatter();
}

public byte[] BinarySerialize(object obj)
{
if (obj == null)
{
throw new ArgumentNullException("obj");
}
MemoryStream stream1 = new MemoryStream();
this.bf.Serialize(stream1, obj);
return stream1.ToArray();
}

public object BinaryDeserialize(byte[] data)
{
if (data == null)
{
return null;
}
MemoryStream stream1 = new MemoryStream(data);
return this.bf.Deserialize(stream1);
}
}
回复

使用道具 举报

1

主题

6

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2021-4-23 13:15:02 | 显示全部楼层
当传输的记录的条数很大时,就出现如下的错误提示:
用户代码未处理 System.Web.Services.Protocols.SoapException
  Message="运行配置文件中指定的扩展时出现异常。 ---> 超过了最大请求长度。"

这样的错误如何处理?

怎么传输很大的记录条数,才不出现错误?

谢谢
回复

使用道具 举报

1

主题

6

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2021-4-23 14:15:01 | 显示全部楼层
呵呵,谢谢大家,问题解决了:

  <system.web>
<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />

<!--  

在web.config里面添加如上信息。
回复

使用道具 举报

0

主题

2

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2021-12-7 21:49:56 | 显示全部楼层
序列化/反序列化不是一句两句能说清的,建议看相关资料
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表