底层连接已关闭:连接意外关闭

这个exception一直抛在SOAP请求上,接收时间差不多是三分钟,大小为2.25兆。

在搜索网页时,我发现各种各样的post似乎都是关于在Request上设置标题,有些人希望我不发送“Expect:”标题,有些人希望我发送“Keep-Alive:”标题,但是无论我发送的标题如何,我仍然会遇到这个令人讨厌的错误。 我不相信设置任何标题是我的答案,因为我可以使用“curl”重新创建完全相同的请求,并且响应最终会回来,没有任何问题

我的

我觉得好像我的选择用完了。 如果有人能提供任何帮助,我将非常感激。 还有一些需要注意的事情是,我正在请求数据的服务器不在我的手中,这些请求也是通过https进行的,而其他具有较小响应的请求可以完美地工作。

谢谢

您将post标记为.NET35,所以您使用的是WCF吗?

如果是这样,这里是我们用于大型数据集的App.config的示例:

                    

我希望回答这个问题还为时不晚。

尝试在合同界面的定义中添加以下属性:

 [ServiceKnownType(typeof(ReturnClass))] 

有关允许返回多态类的更通用的解决方案,请参阅这篇文章: http : //www.goeleven.com/blog/entryDetail.aspx? entry = 45

如果您使用dbml而不是edmx,您将得到这个(底层连接已关闭:连接意外关闭。)因为dbml不会返回它需要datisontract的可序列化数据,因此转到dbml文件的属性并将Serialization模式更改为单向。

你有没有尝试过这篇博文 ? 问题很可能在于.NET的TCP / HTTP堆栈实现。

我收到此错误是因为我的datatransfereobjects以递归方式相互引用。

例如:

客户 – >(有) – >评级等级 – >(属于) – >客户

所以你必须删除周期。

 [DataContract] public class Rating { private Customer _customer; //[DataMember] // <- EITHER HERE public Customer Customer { get { return _customer; } set { _customer = value; } } } [DataContract] public class Customer { private long _customerID; [DataMember] public long CustomerID { get { return _customerID; } set { _customerID = value; } } [DataMember] // <- OR HERE public Rating Rating { get { return _rating; } set { _rating = value; } } } 

尝试了几种方法来摆脱这个错误消息,直到我找到这个解决方案: http : //kiranpatils.wordpress.com/2008/09/22/the-underlying-connection-was-closed-the-connection-was-closed-不料,而返流数据表-从- WCF服务/

您可以将List <>更改为DataSet。 我怀疑DataSet可以处理比List <>更多的数据。

希望能帮助到你。

我有同样的问题,经过深入调查后我发现了这篇文章:

Merrick Chaffer的博客

这一切都与为客户端和服务器设置“dataContractSerializer”有关。 希望这会有所帮助。

我添加了另一个字段,但没有在该属性上设置。 这是我对同样错误的解决方案。

 [DataMember] public bool HasValue { get { return true; } set { }//adding this line made the solution. } 

如果存在内部错误,则会引发一般错误。

尝试在此处添加跟踪: http : //msdn.microsoft.com/en-us/library/ms732023(v = vs.110).aspx

然后,您将看到完整的日志。

对于使用EF的WCF,只需在上下文类中添加以下代码即可。

base.Configuration.ProxyCreationEnabled = false;