问候, 我有以下问题。我有一个在IIS7下运行的WCF服务。应用程序连接到它,WCF服务向数据库发出一些请求。在SQL Server 2005的活动监视器中,我注意到在有102个活动连接之后,IIS7中的应用程序池挂起。在此之后,我无法连接到我的WCF服务。然后只有IIS7重新启动有帮助。 对于连接我使用的ChannelFactory,它的每个请求后关闭。我也介绍了这样的代码,以确保通道被关闭:IIS 7应用程序池 - 无法连接到WCF服务
catch (FaultException)
{
Factory.Abort();
return null;
}
catch (CommunicationException)
{
Factory.Abort();
return null;
}
catch (TimeoutException)
{
Factory.Abort();
return null;
}
catch (Exception ex)
{
Factory.Abort();
return null;
}
finally
{
Factory.Close();
Factory.Abort();
}
我也有以下behvavior为我服务类:
[ServiceBehavior(InstanceContextMode= InstanceContextMode.Single, ConcurrencyMode=ConcurrencyMode.Multiple, AutomaticSessionShutdown=true)]
我也有我的服务网页以下.config文件:
<serviceBehaviors>
<behavior name="Server.Service1Behavior">
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
<serviceThrottling maxConcurrentCalls="2147483647"
maxConcurrentSessions="2147483647"
maxConcurrentInstances="2147483647" />
我试过了一切。请帮助我,因为用户不能这样工作。为什么在连接到数据库应用程序池的102个连接挂起后发生? 这里是数据库
internal SqlConnection CheckIfConnectionOpen()
{
if (_Connection.State != ConnectionState.Open)
{
_Connection.Open();
}
return _Connection;
}
using (SqlCommand cmd = new SqlCommand(query, _Connection))
{
CheckIfConnectionOpen();
//some parameters for sqlcommand here and execute nonQuery or execute reader
}
是否有人可以帮助我,是因为我仍然在寻找一个解决方案
我已经设置StartAutomatically和增加失败的最大数量。我没有帮助。如何检查数据库连接是否已关闭? – 2010-03-03 00:04:50
那它取决于你的数据访问层。你使用OR/M还是自己管理SessionScope/TransationScope/DBConnection对象? – Russell 2010-03-03 00:09:05
我管理SessionScope/TransationScope/DBConnection的对象自己,每一个选择查询使用(SqlCommand的SQLCMD =新的SqlCommand(...))下面的语句开始,我也有在TransactionScope的“使用” – 2010-03-03 00:15:01