作者:骚动的疯子 | 来源:互联网 | 2023-05-17 09:32
使用WCF的IQueryable问题我有一个非常简单的WCF服务方法,它返回一个IQueryable,仅用于测试。也许我在试图了解IQueryable的设计时遇到了什么问题。我明确
使用WCF的IQueryable问题
我有一个非常简单的WCF服务方法,它返回一个IQueryable,仅用于测试。 也许我在试图了解IQueryable的设计时遇到了什么问题。 我明确计划稍后将其与NHibernate的IQueryable提供程序一起使用。 但是,每当使用返回IQueryable的WCF方法时,我首先遇到某种序列化问题(至少我认为这可能是问题)。 它甚至不适用于简单的字符串。
这是我的代码:
public IQueryable GetEquipmentConfigurations() { var returnValue = new List(); returnValue.Add("test"); return returnValue.AsQueryable(); }
它可能没什么意义,只是为了测试我是否真的使用WCF通过线路获得那些IQueryables。 每当我使用类似SoapUI的客户端调用此方法时,我会收到套接字exception和连接重置,就像我尝试返回未标记为DataContract的内容一样。 但我在这里唯一要做的就是尝试返回一些糟糕的字符串列表。 这有什么问题?
我使用basicHTTPBinding,这是我的设置:
为接口设置OperationContract属性:
[OperationContract] IQueryable GetEquipmentConfigurations();
只返回一个简单的字符串就可以了。 无论如何,我想稍后使用LINQ从IQueryablefunction中获利。
有谁知道这里出了什么问题?
谢谢和干杯,
斯特凡
(已过时) AFAIK开箱即可序列化IQueryable <>或表达式树(想想它 &#8211; 这意味着需要序列化表达式树/ lambda并重建函数)
但是,如果有遗嘱,似乎有办法 &#8211; 你可能想看一下像这样的项目http://code.msdn.microsoft.com/exprserialization
编辑 :请注意,时间已经改变 &#8211; 请参阅Marc Gravell的post中的WCF RIA服务。
祝好运!
HTH
核心WCF旨在发送数据 ,而不是查询。 坚持返回List
等; 它会让你头疼。
但是,使用WCF数据服务 IQueryable<>
更多运气,这可以让您公开IQueryable<>
源。
这种方法的工作方式是工具构建一个客户端,公开类似的 IQueryable<>
钩子; 当您查询数据时,它表示线上的表达式,查询数据并将其带回客户端。 但它仍然是通过电线的结果 (而不是查询)。
上述就是C#学习教程:使用WCF的IQueryable问题分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注&#8212;编程笔记