gpt4 book ai didi

c# - WCF - 使用 DataMember 装饰 IEnumerable 导致异常 :The underlying connection was closed: The connection was closed unexpectedly

转载 作者:太空狗 更新时间:2023-10-29 18:19:15 24 4
gpt4 key购买 nike

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

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

WCF System.Net.WebException: The underlying connection was closed: The connection was closed unexpectedly

显然是一个非常普遍的异常,但我的 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; }
}

Cyber​​ResourceProvisioningActionAccountInfo

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

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

如果需要其他配置信息,请告诉我,我会编辑帖子。

最佳答案

由于 alexdej 留下的关于“违反 DataContract 编程模型”的评论我开始仔细查看我的属性(property)中的内容。我在属性中有一个 Linq 类型,虽然它是一个 IEnumerable,但它没有被枚举以进行序列化。添加了一个 .ToList(),一切正常。

关于c# - WCF - 使用 DataMember 装饰 IEnumerable<T> 导致异常 :The underlying connection was closed: The connection was closed unexpectedly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4891451/

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