WCF对象参数丢失值

WCF对象参数丢失值,wcf,silverlight,parameters,Wcf,Silverlight,Parameters,我正在向WCF服务传递一个对象,但没有得到任何返回。在将变量传递给实际执行工作的方法时,我检查了该变量,并注意到在该点上没有对对象设置任何值。这是目标: [DataContract] public class Section { [DataMember] public long SectionID { get; set; } [DataMember] public string Title { get; set; } [DataMember]

我正在向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);

当代码最终进入方法LoadAllSectionsSection s时,参数的SectionID未设置。我逐步浏览了代码,当它进入返回IAsyncResult对象的生成代码时,对象的属性被设置。但是当它实际调用LoadAllSections方法时,收到的参数是完全空白的。我是否需要设置一些东西来让proeprity在方法调用之间保持不变?

对我来说很好-这可能是一个愚蠢的打字错误吗

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


马克

这似乎很奇怪,但事实就是这样。我在该服务上有另一个返回DataTable的方法。每当方法尝试返回DataTable时,传入的参数都会丢失其值。拿出这个方法,一切都会好起来。奇怪。

如果我从Silverlight XAML文件调用此代码,这有关系吗?从结果中返回后,我仍然无法使值保持不变。很抱歉上面的错误,我会解决的。了解Silverlight当然很重要!你能给我看看服务和客户端配置吗?只是两端的部分……这听起来像是客户机和服务之间的不匹配。重建服务;启动服务;在客户端应用程序中执行更新服务引用,确保URL指向已启动、重建的服务;重建客户端并重试。