如何使用 WCF 调用从客户端 windows phone 8.0 silverlight 返回对象的方法
Posted
技术标签:
【中文标题】如何使用 WCF 调用从客户端 windows phone 8.0 silverlight 返回对象的方法【英文标题】:How can I call a method that returns an object from a client windows phone 8.0 silverlight using WCF 【发布时间】:2015-10-28 09:10:03 【问题描述】:我已经实现了一个库 WCF 服务,我已经在 WCF 测试客户端中对其进行了测试,它运行良好,但是当我尝试从托管应用程序(windows phone 8.0 silverlight)调用方法时,所有方法were(void),它们可以工作,但它们什么也没返回!
与 Windows Phone 不同,我成功地在 Winforms 中托管相同的 wcf 库服务,其中方法可以返回对象。 我是WCF的初学者,我尝试了几种解决方案都没有成功!
我有 3 个类:DAO.cs、Article.cs、Client.cs
还有一个 WCF 服务:IMetier.cs 和 Metier.cs
和实体框架模型
客户端类:
[DataContract]
public class Client
[DataMember]
public string NoClient get; set;
[DataMember]
public string BusinessUnit get; set;
[DataMember]
public string TypeClient get; set;
[DataMember]
public string Nom get; set;
[DataMember]
public string Adresse get; set;
[DataMember]
public string Ville get; set;
[DataMember]
public string ccp get; set;
[DataMember]
public string RegionClient get; set;
[DataMember]
public Nullable<bool> Depositaire get; set;
[DataMember]
public Nullable<bool> CentreRegional get; set;
[DataMember]
public string CodeMagazin get; set;
[DataMember]
public Nullable<bool> ClientComptant get; set;
这里是界面:IMetier.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
namespace MyNameSpace
[ServiceContract]
public interface IMetier
[OperationContract]
void addClient(Client client);
[OperationContract]
List<Client> GetClients();
这是 Metier.cs 类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
namespace MyNameSpace
public class Metier : IMetier
DAO dao = new DAO();
void addClient(Client client)
dao.addClient(client);
public List<Client> GetClients()
return dao.GetClients();
【问题讨论】:
【参考方案1】:我解决了我的问题, WCF 使用线程的异步方法,我应该同步使用这些方法。 第二种方法是实现事件 GetClienteEventArgs 并从事件属性中检索我的结果。 在客户端应用程序构造函数中,我们必须处理事件
ServiceMetier.MetierClient metier = new ServiceMetier.MetierClient();
metier.GetClientsAsync();
metier.GetClientsCompleted += new EventHandler<ServiceMetier.ListerClientsCompletedEventArgs>(ListerClients_Completed);
然后实现它
void GetClients_Completed(object sender, ListerClientsCompletedEventArgs e)
List<ServiceMetier.Client> clients =e.Result;
注意e.Result是服务方法的返回语句
【讨论】:
以上是关于如何使用 WCF 调用从客户端 windows phone 8.0 silverlight 返回对象的方法的主要内容,如果未能解决你的问题,请参考以下文章
从 .Net 2.0 客户端调用 WCF 服务时如何配置安全性