인사말, 문제가 있습니다. IIS7에서 실행되는 WCF 서비스가 있습니다. 응용 프로그램이 응용 프로그램에 연결되고 WCF 서비스가 DB에 요청을합니다. SQL Server 2005의 활동 모니터에서 정확히 102 개의 활성 연결이 있고 IIS7의 응용 프로그램 풀이 중단 된 것을 알 수 있습니다. 이 후 내 WCF 서비스에 연결할 수 없습니다. 그런 다음 IIS7 만 다시 시작됩니다. 연결에 대해 ChannelFactory를 사용 중이며 요청이있을 때마다 닫힙니다. 나는 내 서비스 웹에서 다음 또한이IIS 7 응용 프로그램 풀 - WCF 서비스에 연결할 수 없습니다.
[ServiceBehavior(InstanceContextMode= InstanceContextMode.Single, ConcurrencyMode=ConcurrencyMode.Multiple, AutomaticSessionShutdown=true)]
:
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이 : 나는 또한 채널이 닫혀 있는지 확인하기 위해이 같은 코드를 도입했습니다 .config 파일 :
<serviceBehaviors>
<behavior name="Server.Service1Behavior">
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
<serviceThrottling maxConcurrentCalls="2147483647"
maxConcurrentSessions="2147483647"
maxConcurrentInstances="2147483647" />
나는 모든 것을 시도했다. 사용자가 이런 식으로 일할 수 없기 때문에 나를 도와주세요. 왜 DB 응용 프로그램 풀에 대한 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가 이미 설정되었으며 최대 실패 횟수가 증가했습니다. 나는 도왔다. DB 연결이 닫혀 있는지 어떻게 확인할 수 있습니까? –
글쎄 데이터 액세스 레이어에 따라 다릅니다. OR/M을 사용합니까? 아니면 SessionScope/TransationScope/DBConnection 객체를 직접 관리합니까? – Russell
각 SessionScope/TransationScope/DBConnection 개체를 직접 관리합니다. 각 select 쿼리는 (SqlCommand sqlcmd = new SqlCommand (...))를 사용하여 다음 문장으로 시작하고 TransactionScope를 "using"으로 사용합니다. –