我已经实现了一个库WCF服务,我已经在WCF测试客户端测试了它并且它工作得很好,但是当我试图从托管应用程序调用这些方法时(windows phone 8.0 silverlight),所有的方法是(无效),他们工作,但他们什么也没有回来!
与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();
}
}
}
答案 0 :(得分:0)
我解决了我的问题, 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是服务方法的返回语句