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

我先定义一个契约
    [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,那么就肯定出现上面一样的超时错误,求大虾帮忙解决!

慕少森
浏览 616回答 4
4回答

噜噜哒

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

蝴蝶不菲

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

HUWWW

应该跟序列化没关系吧,毕竟Image为Null就能正常调用。 另外一个 直接返回Image出错 这个是为什么?

30秒到达战场

同楼上,是不是你的自定义类不允许序列化?
打开App,查看更多内容
随时随地看视频慕课网APP