将 DTO 与 WCF 结合使用

Posted

技术标签:

【中文标题】将 DTO 与 WCF 结合使用【英文标题】:using DTO with WCF 【发布时间】:2012-07-16 00:55:03 【问题描述】:

我有一个与 POCO 实体映射的 EFM,m 使用 WCF 进行业务逻辑

在 WCF 中调用此函数时:-

 public  List<DTO.Product> Viewall()
    
        var val= _repositoryprod.GetAll().Take(2).ToList();
        return val;
    

我收到一个错误套接字连接已被释放。

我尝试序列化 DTO 类,甚至使用 [DataContract][DataMember] 属性,但没有成功。

M 使用 TCP 绑定并且只是最大化每个值仍然为什么它显示套接字连接被处理.....

绑定名称="netTcpStreaming" transferMode="Streamed" maxReceivedMessageSize="4294967296" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" openTimeout="01:00:00" receiveTimeout="01:00:00" closeTimeout=" 01:00:00" sendTimeout="01:00:00" maxConnections="100" listenBacklog="100"

我做错了什么??

【问题讨论】:

启用跟踪并检查是否可以找到一些东西 【参考方案1】:

此错误可能是由于 maxItemsInObjectGraph 的默认限制为 65536。请尝试更改该限制并重试!

【讨论】:

很好尝试,也设置了 maxItemsInObjectGraph="2147483647" @Ankit 这个配置应该在客户端和服务器端都设置 那么,您应该首先启用跟踪以获取更多信息blogs.msdn.com/b/madhuponduru/archive/2006/05/18/601458.aspx 另外,检查您是否正在使用任何明确处理连接的“使用”块 @Boomer ok der 似乎在序列化过程中出现了一些问题,我有一些类型,如十进制、短、可为空的 int、bool 和字符串。是否有任何des造成问题【参考方案2】:

得到解决方案,与 EFM + POCO 一样,您需要在 WCF 操作合同中添加 ApplyDataContractResolver 属性

只要按照这个演练,你就完成了

http://msdn.microsoft.com/en-us/library/ee705457.aspx

【讨论】:

以上是关于将 DTO 与 WCF 结合使用的主要内容,如果未能解决你的问题,请参考以下文章

将 Azure 服务总线队列与 WCF 结合使用的优势

ASP.NET 应用程序中 WCF、DAO 和 DTO 层之间的交互

在 WPF 智能客户端应用程序中使用 WCF DTO 时理解 MVVM 使用的问题

使用 linq to sql 后端通过 WCF 查询 DTO 对象

对 protobuf-net WCF 的使用感到困惑

暴露 DTO 或实体的 WCF 服务