Привет,
У меня к следующей проблеме. У меня есть служба WCF, которая работает под IIS7. Приложение подключается к нему, и служба WCF делает несколько запросов к БД. Я заметил в мониторе активности в SQL Server 2005, что после ровно 102 активных соединений пул приложений в IIS7 зависает. После этого я не могу подключиться к моей службе WCF. Тогда только перезапуск IIS7 помогает.
Для подключения я использую ChannelFactory, он закрывается после каждого запроса. Я также ввел такой код, чтобы быть уверенным, что канал закрыт:
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();
}
У меня также есть следующий бевавиор для моего класса обслуживания:
[ServiceBehavior(InstanceContextMode= InstanceContextMode.Single, ConcurrencyMode=ConcurrencyMode.Multiple, AutomaticSessionShutdown=true)]
В моем файле web.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
}
Может кто-нибудь помочь мне с этим, потому что я все еще ищу решение