ServiceThrottlingBehavior.MaxConcurrentSessions 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
ServiceHost 개체가 한 번에 수락할 수 있는 최대 세션 수를 지정하는 값을 가져오거나 설정합니다.
public:
property int MaxConcurrentSessions { int get(); void set(int value); };
public int MaxConcurrentSessions { get; set; }
member this.MaxConcurrentSessions : int with get, set
Public Property MaxConcurrentSessions As Integer
속성 값
서비스 호스트가 수락하는 최대 세션 수입니다. 기본값은 100 번 프로세서 수입니다.
예제
다음 코드 예제에서는 애플리케이션 구성 파일에서 ServiceThrottlingBehavior를 사용하여 MaxConcurrentSessions, MaxConcurrentCalls 및 MaxConcurrentInstances 속성을 1로 설정하는 예를 보여 줍니다. 실제 경험을 통해 특정 애플리케이션에 대한 최적의 설정을 결정하도록 합니다.
<configuration>
<appSettings>
<!-- use appSetting to configure base address provided by host -->
<add key="baseAddress" value="http://localhost:8080/ServiceMetadata" />
</appSettings>
<system.serviceModel>
<services>
<service
name="Microsoft.WCF.Documentation.SampleService"
behaviorConfiguration="Throttled" >
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/SampleService"/>
</baseAddresses>
</host>
<endpoint
address=""
binding="wsHttpBinding"
contract="Microsoft.WCF.Documentation.ISampleService"
/>
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"
/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="Throttled">
<serviceThrottling
maxConcurrentCalls="1"
maxConcurrentSessions="1"
maxConcurrentInstances="1"
/>
<serviceMetadata
httpGetEnabled="true"
httpGetUrl=""
/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
설명
MaxConcurrentSessions 속성은 ServiceHost 개체에서 수락할 수 있는 최대 세션 수를 지정합니다. 이 경우의 세션은 신뢰할 수 있는 세션을 지원하는 채널만을 의미하는 것은 아닙니다. 예를 들어, System.ServiceModel.NetNamedPipeBinding은 세션을 지원하지만 신뢰할 수 있는 세션을 포함하지 않습니다.
각 수신기 개체는 보류 중인 값에 계산 되지 않는 채널 세션이 하나 있을 수 있습니다 MaxConcurrentSessions WCF 채널 세션을 허용 하 고 해당 메시지 처리를 시작 될 때까지 합니다. 이 속성은 세션을 활용하는 시나리오에서 가장 유용합니다.
이 속성을 클라이언트 스레드 수보다 작은 값으로 설정하면 여러 클라이언트의 요청이 동일한 소켓 연결에 대기할 수 있습니다. 서비스의 열려 있는 세션 수가 MaxConcurrentSessions
에 도달하면 서비스와 세션이 생성되지 않은 클라이언트의 요청은 서비스에서 다른 클라이언트와의 세션을 닫을 때까지 차단됩니다. 서비스되지 않은 클라이언트 요청은 제한 시간이 초과되고 서비스에서 해당 세션을 일방적으로 닫습니다.
이 문제를 방지하려면 요청 메시지가 서로 다른 소켓 연결에 전달되도록 서로 다른 응용 프로그램 도메인에서 클라이언트 스레드를 실행합니다.
애플리케이션 구성 파일에서 serviceThrottling> 요소를 사용하여< 이 특성의 값을 설정할 수도 있습니다.