【问题标题】:WCF error while working with List, ErrorCode: 10054使用列表时出现 WCF 错误,错误代码:10054
【发布时间】:2012-05-22 07:29:42
【问题描述】:

使用 List 时出现 WCF 错误:

“无法从传输连接中读取数据:一个现有的 连接被远程主机强行关闭” 尝试从 WCF 服务返回列表时。

请注意; 1.我的业务对象Bank设置为KnownTypeAttribute,如[ServiceKnownType(typeof(ProjectName.Bo.Bank))]

  1. 我可以从 WCF 服务返回对象银行

  2. 我的内部异常错误层次结构就像 异常:底层连接已关闭:接收时发生意外错误。

InnerException: Unable to read data from the transport connection: 一个现有的连接被远程主机强行关闭

InnerException:一个现有的连接被远程主机强行关闭

  1. 我试过[ServiceKnownType(typeof(System.Collections.IList))]

简而言之,当 WCF 客户端尝试接收 return List<Bank> 时,我遇到了错误,请任何人提出一些建议?

【问题讨论】:

  • 我认为你需要从Tracing开始
  • 如果您的银行类是实体框架对象,请尝试创建一个简单的银行 POCO 填充它并返回 POCO 对象。还要确保 List 不是很大,如果它很大,则增加客户端和服务器端的 readerQuotas 设置以进行绑定。

标签: c# wcf


【解决方案1】:

不太确定,但返回泛型类时不应该使用泛型接口吗? IList<T> 而不是 IList..

【讨论】:

    【解决方案2】:

    解决了!!这是一个 ServiceKnownType 问题。在已知类型加载器中,我们必须添加运行时类型,例如;

    Type aaa =  Type.GetType("System.Collections.Generic.List`1[[ProjectName.BusinessObjects.Bank, ProjectName.BusinessObjects, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null]]");
    

    knownTypes.Add(aaa);

    任何有同样问题的人都可以试试这个。它在我的环境中工作!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-20
      • 2017-08-03
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 2014-02-17
      • 2012-01-08
      • 1970-01-01
      相关资源
      最近更新 更多