web service传递stream二进制对象
今天遇到的问题,在园子里找到了解决方案:http://www.cnblogs.com/andy65007/archive/2009/11/24/1609584.html
Web Service是一种跨平台的分布式解决方案,使用标准XML格式的SOAP消息传递信息,统一了不同平台的通讯协议,便于我们实现异构系统的交互;但使用统一的XML格式带来的问题就是此协议只支持基本的数据类型, 或包装了基本数据类型的简单对象,我们无法在.net中使用web service直接传递.net对象或二进制流,只有把对象或二进制流序列化为字符串才可以在web service中传递。有2种使用web service方式传递Stream对象的方法:
1.转为字符串(范例):
staticvoid Main(string[] args)
{
FileStream stream =new FileStream("C:\\test.xls", FileMode.Open);
byte[] buff =newbyte[stream.Length];
stream.Read(buff,0, buff.Length);
string strParam = Convert.ToBase64String(buff);
//Below invoke web service
MyWebService service =new MyWebService();
service.SendFile(strParam);
}
2.
使用Microsoft的WSE(Web Services Enhancements)扩展web service: