gpt4 book ai didi

c# - 使用 WCF 的 IQueryable 问题

转载 作者:太空狗 更新时间:2023-10-29 20:00:39 26 4
gpt4 key购买 nike

我有一个非常简单的 WCF 服务方法,它返回一个 IQueryable,仅用于测试。也许我在试图理解 IQueryable 的设计目的时弄错了。我明确计划稍后将其与 NHibernate 的 IQueryable 提供程序一起使用。但首先,每当使用返回 IQueryable 的 WCF 方法时,我都会遇到某种序列化问题(至少我认为这可能是问题所在)。它甚至不适用于简单的字符串。

这是我的代码:

public IQueryable<string> GetEquipmentConfigurations()
{
var returnValue = new List<string>();
returnValue.Add("test");
return returnValue.AsQueryable();
}

它可能没有多大意义,它只是为了测试我是否真的使用 WCF 通过网络获取这些 IQueryable。每当我使用像 SoapUI 这样的客户端调用此方法时,我都会收到套接字异常和连接重置,就像我试图返回未标记为 DataContract 的内容一样。但我在这里做的唯一一件事就是试图返回一些糟糕的字符串列表。这有什么问题吗?

我使用 basicHTTPBinding,这是我的设置:

<system.serviceModel>
<services>
<service name="EquipmentConfigurationService" behaviorConfiguration="DefaultBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000/Krones.KBase/Services/EquipmentConfigurationService"/>
</baseAddresses>
</host>
<endpoint address=""
binding="basicHttpBinding"
contract="Krones.MES.KBase.Public.Service.EquipmentDefinition.IEquipmentConfigurationService" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="DefaultBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="True"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>

为接口(interface)设置了 OperationContract 属性:

[OperationContract]
IQueryable<string> GetEquipmentConfigurations();

当只返回一个简单的字符串时一切正常。无论如何,我想稍后使用 LINQ 从 IQueryable 功能中获利。

有人知道这里出了什么问题吗?

谢谢和干杯,

斯特凡

最佳答案

核心 WCF 旨在发送数据,而不是查询。坚持返回List<Foo> ETC;它会让您省去很多麻烦。

但是,使用 WCF Data Services 完成您想要的事情可能会更幸运。 ,它允许您公开 IQueryable<>来源。

它的工作方式是工具构建一个客户端,该客户端显示相似的外观 IQueryable<> Hook ;当您查询数据时,它代表在线上的表达式,查询数据并将其带回客户端。但通过网络传输的仍然是结果(不是查询)。

关于c# - 使用 WCF 的 IQueryable 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3341469/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com