WCF对象参数丢失值

时间:2009-08-10 15:23:18

标签: wcf silverlight parameters

我正在将一个对象传递给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?

2 个答案:

答案 0 :(得分:0)

对我来说工作得很好 - 这可能是一个愚蠢的错字吗?

在您的OperationContract中,您定义LoadAllSections,但在您的客户端代码中,您将事件处理程序附加到proxy.GetAllSectionsCompleted事件 - 也许这只是错误的处理程序?不应该是proxy.LoadAllSectionsCompleted ??

马克

答案 1 :(得分:0)

这看起来很奇怪,但它会发生什么。我在返回DataTable的服务上有另一种方法。每当方法尝试返回DataTable时,传入的参数都会丢失其值。取出方法,一切正常。奇