当使用&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 { }
而后实现代码,搞定!
----------------------------------------------------------------
很想一辈子安安心心写代码,再写一本书。老婆笑我痴心妄想!
这个浮躁的世界啊!
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}