我开发了WCF服务,该服务在内部使用实体框架进行数据库操作。当插入,更新和删除工作正常时,我在从该表中选择所有记录并将其公开给客户端时遇到问题。
我向客户公开数据的代码是:-
public IQueryable <Bank_Configuration> SelectBankConfiguration()
{
using (EFEntities objEFEntities = new EFEntities())
{
var Result= from c in objEFEntities.Bank_Configuration
select c;
return Result;
}
}
但是在客户端,当我使用此方法获取数据时,客户端给出的错误为
收到对“ http:// localhost:8732 / Design_Time_Addresses / WcfServiceLibrary1 / Service1 /”的HTTP响应时发生错误。这可能是由于服务端点绑定未使用HTTP协议。这也可能是由于服务器终止了HTTP请求上下文(可能是由于服务关闭了)。有关更多详细信息,请参见服务器日志。
为什么会出现此错误,以及如何向客户端公开数据
最佳答案
在序列化WCF消息之前,将处置您的EFEntities对象,这是导致EF查询实际执行的原因。通过调用ToList()或ToArray()在“ using”块内对结果集进行矩阵化。
public IEnumerable<Bank_Configuration> SelectBankConfiguration()
{
using (EFEntities objEFEntities = new EFEntities())
{
var Result= from c in objEFEntities.Bank_Configuration
select c;
return Result.ToArray();
}
}