C# 通信链路故障(| |)线程正在中止

C# 通信链路故障(| |)线程正在中止,c#,asp.net,performance,iis,informix,C#,Asp.net,Performance,Iis,Informix,我面临以下问题: 一些用户在尝试我的web应用程序时抱怨: 我遇到的错误是: IP: System.Web.HttpApplicationState Agent: IE8 AgentDtails : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2) Refrer: https://xxxxxxxxxxxxxxxxxx.aspx?guid=cb083ebc-d1a8-49ff-b00d-ac

我面临以下问题:

一些用户在尝试我的web应用程序时抱怨:

我遇到的错误是:

IP: System.Web.HttpApplicationState

Agent: IE8

AgentDtails : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2)

Refrer: https://xxxxxxxxxxxxxxxxxx.aspx?guid=cb083ebc-d1a8-49ff-b00d-acf208dd67ac

Plateform: WinXP
05/09/2013 09:20:37
Error in: https://xxxxxxxxxxxxxxxxxx.aspx?guid=cb083ebc-d1a8-49ff-b00d-acf208dd67ac
 Error Message:
 Error Message: Thread was being aborted.
有时:

Error Message:ERROR [08S01] [Informix .NET provider]Communication link failure.

这些错误不是来自特定的页面或方法。我不时地从不同的页面上随机地得到这些错误


我的连接字符串是:

 <add key="connection" value="User Id=XXX;Password=XXXX;Host=aa1;Server=st1;Service=st1;Database=doc; Client Locale=ar_ae.1256; Database Locale=ar_ae.8859-6; Protocol=olsoctcp;pooling=true;Min Pool Size=4;Max Pool Size=200;"/>

我看到您使用了池。它提高了性能,因为您确实需要用每个HTTP请求连接do DB,但这样的池必须容易出错。若您的环境(路由器、防火墙)中的某些东西认为数据库服务器和数据库池之间的长时间非活动连接真的已经死了,并且可以断开连接,那个么就会出现问题。然后您尝试使用这样的连接,db pool认为这样的连接是好的和可用的,但它是关闭的,不可用

如何防止此类错误取决于池。一些池有特殊的查询来检查连接是否处于活动状态。您将获得唯一已成功检查的连接。有些池有超时时间,如果在此期间未使用连接,则会释放连接。您必须阅读更多关于您使用的池的信息并对其进行配置。您没有显示您使用的.NET客户端的版本。在3.70版的“IBM Informix.NET提供程序参考指南”中,我发现:

您可以使用池、最大池大小、连接生存时间和最小池大小 用于控制连接池的连接字符串属性

Idle Timeout内部参数是用于删除的标准协议 池中的连接,并防止连接保持活动状态 在服务器中无限期运行。空闲超时的值为120秒,不能更改 通过在连接字符串中设置新值进行更改。使用空闲超时,当 连接池中未使用的连接超过120秒 连接已关闭并从池中删除

对我来说2分钟是好的,但也许你使用其他版本的客户端与不同的设置

 <add key="connection" value="User Id=XXX;Password=XXXX;Host=aa1;Server=st1;Service=st1;Database=doc; Client Locale=ar_ae.1256; Database Locale=ar_ae.8859-6; Protocol=olsoctcp;pooling=true;Min Pool Size=4;Max Pool Size=200;"/>