我先定义一个契约
[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,那么就肯定出现上面一样的超时错误,求大虾帮忙解决!
你使用的真实类型是Bitmap,你可以试试下面两种解决方案:
1、将ServiceContract的返回值类型从Image换成Bitmap ;
2、通过System.ServiceModel.ServiceKnownTypeAttribute让Bitmap变成已知类型
把你自定义的类弄成可序列化看行不 我猜的···
同楼上,是不是你的自定义类不允许序列化?