WCF - 使用DataMember解析IEnumerable <T>会导致异常:基础连接已关闭:连接意外关闭

ahs*_*ele 8 c# ienumerable wcf datamember c#-4.0

我创建了一个返回的WCF服务IEnumerable<CyberResourceProvisioningAction>.

Cyber​​ResourceProvisioningAction类型具有AccountInformation属性IEnumerable<CyberResourceProvisioningActionAccountInfo>.当我使用DataMemberAttribute装饰AccountInformation属性时,我收到异常:

WCF System.Net.WebException:底层连接已关闭:连接意外关闭

显然是一个非常通用的例外,但是我的Google-fu表明在集合中返回大量对象时最常出现的问题.建议的解决方法是设置<dataContractSerializer maxItemsInObjectGraph="2147483646"/>.不幸的是,这并没有解决我的问题.(没想到会因为我返回少量数据).

属性设置正确,所以我很确定我的问题与我的序列化配置有关.我的类有什么问题导致WCF服务以这种方式出错吗?

[DataContract]
public class CyberResourceProvisioningAction
{
    [DataMember]
    public string Action { get; set; }

    [DataMember]
    public DateTime RcdChgDateTime { get; set; }

    [DataMember]
    public string CyberResourceName { get; set; }

    [DataMember]
    public IEnumerable<CyberResourceProvisioningActionAccountInfo> AccountInformation
    { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Cyber​​ResourceProvisioningActionAccountInfo

[DataContract]
public class CyberResourceProvisioningActionAccountInfo
{
    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果需要其他配置信息,请通知我,我将编辑帖子.

ahs*_*ele 14

由于关于alexdej留下的"DataContract编程模型违规"的评论,我开始仔细研究我的属性中的内容.我在属性中有一个Linq类型,虽然它是一个IEnumerable,但它没有被枚举为序列化.添加了一个.ToList(),一切都很好.