WCF对象参数丢失值
我正在向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]
[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指向已启动、重建的服务;重建客户端并重试。