다음을 통해 공유


ServiceThrottlingBehavior.MaxConcurrentSessions 속성

정의

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

속성 값

Int32

서비스 호스트가 수락하는 최대 세션 수입니다. 기본값은 100 번 프로세서 수입니다.

예제

다음 코드 예제에서는 애플리케이션 구성 파일에서 ServiceThrottlingBehavior를 사용하여 MaxConcurrentSessions, MaxConcurrentCallsMaxConcurrentInstances 속성을 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> 요소를 사용하여< 이 특성의 값을 설정할 수도 있습니다.

적용 대상