WCF中wcf datacontractt和MessageContract的区别

当使用&Message&或具有&MessageContractAttribute&的类型时,方法不应使用任何其他参数类型错误处理
在做上传文件的WCF时,使用了[MessageContract]。
初期代码如下
& & [ServiceContract]
& & public interface
IWcfUploadFile
& [OperationContract]
& string UploadFile(FileData file);
& // 任务: 在此处添加服务操作
& & [MessageContract]
& & public class
& [MessageHeader]
& public long uid {}
& [MessageHeader]
& public string fname { }
& [MessageHeader]
& public string dname { }
& [MessageHeader]
& public bool isoverwrite { }
& [MessageHeader]
& public bool iscreatenewname { }
& [MessageBodyMember]
& public Stream data { }
此处说明一下:MessageContract标记的类,MessageHeader可以多个,但只能有一个MessageBodyMember。为提高效率,可以将多个MessageHeader合并成一个[DataContract]和[DataMember]标记的类。
发现错误:......当使用 ......Message 或具有
......MessageContractAttribute 的类型时,方法不应使用任何其他参数类型错误处理。
查找原因,发现是UploadFile(FileData
file)的返回,要不是void,要不是[MessageContract]标记的类。
& & [ServiceContract]
& & public interface
IWcfUploadFile
& [OperationContract]
& UploadImageFileInfo UploadFile(FileData
& // 任务: 在此处添加服务操作
& & [MessageContract]
& & public class
& [MessageHeader]
& public long uid {}
& [MessageHeader]
& public string fname { }
& [MessageHeader]
& public string dname { }
& [MessageHeader]
& public bool isoverwrite { }
& [MessageHeader]
& public bool iscreatenewname { }
& [MessageBodyMember]
& public Stream data { }
& & [Serializable]
& & [MessageContract]
& & public class
UploadImageFileInfo
& [MessageHeader]
& public string fname { }
& [MessageHeader]
& public int width { }
& [MessageHeader]
& public int height { }
& [MessageHeader]
& public string imgsiteroot { }
& [MessageHeader]
& public string imgsub { }
而后实现代码,搞定!
----------------------------------------------------------------
很想一辈子安安心心写代码,再写一本书。老婆笑我痴心妄想!
这个浮躁的世界啊!
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 wcf messageheader 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信