[英]exposing method in wcf service
所以我终于完成了WCF服务中的缓存。 无论如何,现在这是我的界面
[ServiceContract]
public interface IService1
{
[OperationContract]
IEnumerable<Screen_Data> GetData(DateTime d);
}
这是我的类,实现了此接口
[AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class Service1 : IService1
{
[AspNetCacheProfile("CacheFor2Minutes")]
[WebGet(UriTemplate = "?DateTime={DateTime}")]
public IEnumerable<Screen_Data> GetData(DateTime d)
{
ScreenScrapingEntities1 db = new ScreenScrapingEntities1();
IEnumerable<Screen_Data> sd = from p in db.Screen_Data
where p.DateTime > d
select p;
return sd;
}
}
这个screen_data是一个数据库表,我已经从数据库生成了一个ado.net实体数据模型。
我的问题是,当我尝试从传递日期时间值的WCF客户端调用此方法时,它应返回10多个行。 我不确定如何从该方法返回这些行,有人可以帮助我处理我在课堂上编写的这段代码,它甚至不使用linq查询中的lambda表达式。
这就是我从客户端调用此GetData
方法的方式
DateTime t = DateTime.Parse("2012-05-31 11:38:29.070");
ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
client.GetData(t);
这是创建模型时生成的类
[EdmEntityTypeAttribute(NamespaceName="ScreenScrapingModel", Name="Screen_Data")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class Screen_Data : EntityObject
{
}
使用自己的Dto
[DataContract]
public class ScreenDto
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public DateTime DateAdded { get; set; }
}
尝试返回数组
[ServiceContract]
public interface IService1
{
[OperationContract]
ScreenDto[] GetData(DateTime d);
}
更改方法的实现
public ScreenDto[] GetData(DateTime d)
{
ScreenScrapingEntities1 db = new ScreenScrapingEntities1();
ScreenDto[] sd = (from p in db.Screen_Data
where p.DateTime > d
select new ScreenDto()
{Id = p.Id, Name = p.Name, DateAdded =p.Date)
.ToArray();
return sd; // put break point here, to check return data
}
称其为
ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
var results = client.GetData(t);
启动Web服务和客户端应用程序,您的Web服务应处于调试模式,检查是否从客户端调用,以及从服务端返回的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.