我正在将一个对象传递给WCF服务并且没有得到任何回复。我检查了变量,因为它传递给实际完成工作的方法,并注意到在该点上没有在对象上设置任何值。这是对象:
[DataContract]
public class Section {
[DataMember]
public long SectionID { get; set; }
[DataMember]
public string Title { get; set; }
[DataMember]
public string Text { get; set; }
[DataMember]
public int Order { get; set; }
}
以下是该方法的服务代码:
[OperationContract]
public List<Section> LoadAllSections(Section s) {
return SectionRepository.Instance().LoadAll(s);
}
实际调用此方法的代码是这样,位于Silverlight XAML文件中:
SectionServiceClient proxy = new SectionServiceClient();
proxy.LoadAllSectionsCompleted += new EventHandler<LoadAllSectionsCompletedEventArgs>(proxy_LoadAllSectionsCompleted);
Section s = new Section();
s.SectionID = 4;
proxy.LoadAllSectionsAsync(s);
当代码最终进入方法LoadAllSections(Section s)时,不设置参数的SectionID。我逐步完成了代码,当它进入返回IAsyncResult对象的生成代码时,就会设置对象的属性。但是当它实际调用方法LoadAllSections时,收到的参数是完全空白的。有什么东西我必须设置,以使方法调用之间的proeprty?
答案 0 :(得分:0)
对我来说工作得很好 - 这可能是一个愚蠢的错字吗?
在您的OperationContract中,您定义LoadAllSections
,但在您的客户端代码中,您将事件处理程序附加到proxy.GetAllSectionsCompleted
事件 - 也许这只是错误的处理程序?不应该是proxy.LoadAllSectionsCompleted
??
马克
答案 1 :(得分:0)
这看起来很奇怪,但它会发生什么。我在返回DataTable的服务上有另一种方法。每当方法尝试返回DataTable时,传入的参数都会丢失其值。取出方法,一切正常。奇