【发布时间】:2010-02-22 17:51:15
【问题描述】:
我有一个应用程序,它将使用 WCF 向客户端提供各种数据块。但是,由于将返回的某些数据集的大小(这是因为客户端应用程序需要在列表中显示大量对象,而不是因为我只是在设计中偷懒)我' m 达到了邮件大小限制。
我预料到了这一点,并计划实现数据分页/响应流(我相信 Pablo Cibraro 曾经写过一篇关于此的文章)。但是,我看到了一些使 WCF 数据服务看起来非常酷的演示。我只是无法让它为我工作。
我没有数据库后端,也没有在 IIS 中托管。我已经能够获得一些处理基本对象的示例,但是一旦我将它插入到我的应用程序中的对象中,它就无法正常工作 - 我收到一个请求错误,这似乎被设计为无用 -它只是建议检查服务器日志而不建议我如何执行此操作。我怀疑它假设我使用 IIS 进行托管,并且 IIS 可能会记录它托管的数据服务的消息。
我正在尝试使用的一个相当简单的类是用于日志消息(我希望诊断仪表板样式的客户端能够远程向我显示过去 24 小时的服务器日志):
public class Message
{
public string Source { get; set; }
public MessageType Type { get; set; }
public DateTime Timestamp { get; set; }
public string MessageText { get; set; }
public override string ToString()
{
return string.Format("[{0}] [{1}] [{2}] {3}", Timestamp.ToString(), Source, Type, MessageText);
}
}
使用这个类会产生错误,而如果我将它指向一个我模拟为测试的类(如 Pablo 在此处的演示中:http://msdn.microsoft.com/en-us/data/cc745968.aspx),那么它可以正常工作。关于为什么会这样,或者我如何从错误中获得有用的任何想法?
下面是我的服务定义和我用来公开我想要返回的集合的 IQueryable 实现的类(目前我只完成了日志,类型为List<Message>)
public class DataServiceFacade
{
public IQueryable<Message> Log
{
get
{
return Program.Log.AsQueryable();
}
}
}
public class DataServiceHost : DataService<DataServiceFacade>
{
public static void InitializeService(IDataServiceConfiguration config)
{
config.UseVerboseErrors = true;
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
}
}
现在,这可能很简单,但我已经花了太多时间将头撞在这堵特殊的砖墙上。我希望 Data Services 能够为我处理诸如分页之类的事情,并给我一个很好的灵活格式,可以在不同的平台上工作。
此外,如果无法为此使用数据服务,我将不胜感激任何有关数据分页或流式传输集合的指针。
谢谢
【问题讨论】:
标签: wcf wcf-data-services