为了账号安全,请及时绑定邮箱和手机立即绑定

WCF服务方法返回一个图像对象(Image或Bitmap)出错,如何解决?

WCF服务方法返回一个图像对象(Image或Bitmap)出错,如何解决?

慕少森 2018-12-07 02:01:50
我先定义一个契约    [ServiceContract]    public interface IMessage    {        [OperationContract]        Image GetImage();    } 再实现它    public class MessageService : IMessage    {        public Image GetImage()        {            return  Image.FromFile("用户管理.png");        }    }采用TCP绑定,客户端调用的时候始终都是报错,显示超时时间已到。把超时时间改大也没用。 但是我使用Stream替换Image却可以返回,如下     public class MessageService : IMessage    {        public Stream GetImage()        {      Stream sm=FileStream.........            return sm;        }    }   请问 WCF方法如何才能正确返回图像? 另外我的其他WCF方法中也有类似问题,如下     public class MessageService : IMessage    {        public 我的自定义类 GetImage()        {      我的自定义类 aa =new 我的自定义类();            return aa;        }    } 我的自定义类中有一个属性类型是Image,当aa.Image为null的时候这个方法没问题,客户端可以正确返回值,但是如果不为null,那么就肯定出现上面一样的超时错误,求大虾帮忙解决!
查看完整描述

4 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

你使用的真实类型是Bitmap,你可以试试下面两种解决方案:
1、将ServiceContract的返回值类型从Image换成Bitmap ;
2、通过System.ServiceModel.ServiceKnownTypeAttribute让Bitmap变成已知类型

查看完整回答
反对 回复 2019-01-21
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

把你自定义的类弄成可序列化看行不       我猜的···

查看完整回答
反对 回复 2019-01-21
?
HUWWW

TA贡献1874条经验 获得超12个赞

应该跟序列化没关系吧,毕竟Image为Null就能正常调用。 另外一个 直接返回Image出错 这个是为什么?
查看完整回答
反对 回复 2019-01-21
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

同楼上,是不是你的自定义类不允许序列化?

查看完整回答
反对 回复 2019-01-21
  • 4 回答
  • 0 关注
  • 615 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信