ServiceThrottlingBehavior.MaxConcurrentSessions ServiceThrottlingBehavior.MaxConcurrentSessions ServiceThrottlingBehavior.MaxConcurrentSessions ServiceThrottlingBehavior.MaxConcurrentSessions Property

定義

ServiceHost オブジェクトが同時に受け入れ可能なセッションの最大数を指定する値を取得または設定します。Gets or sets a value that specifies the maximum number of sessions a ServiceHost object can accept at one time.

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

プロパティ値

1 つのサービス ホストが受け入れ可能なセッションの最大数。The maximum number of sessions a service host accepts. 既定では 100 回プロセッサの数です。The default is 100 times the processor count.

例として、ServiceThrottlingBehaviorMaxConcurrentSessions、および MaxConcurrentCalls の各プロパティを 1 に設定するアプリケーション構成ファイルから MaxConcurrentInstances を使用する方法を次のコード例に示します。The following code example shows the use of ServiceThrottlingBehavior from an application configuration file that sets the MaxConcurrentSessions, MaxConcurrentCalls, and MaxConcurrentInstances properties to 1 as an example. 特定のアプリケーションで最適な設定については、実際の動作から判断します。Real-world experience determines what the optimal settings are for any particular application.

<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 オブジェクトが受け入れ可能なセッションの最大数を表します。The MaxConcurrentSessions property specifies the maximum number of sessions a ServiceHost object can accept. この場合のセッションは、信頼できるセッションをサポートしているチャネルだけを意味するわけではないことに注意してください (たとえば、System.ServiceModel.NetNamedPipeBinding はセッションをサポートしますが、信頼できるセッションは含みません)。It is important to understand that sessions in this case does not mean only channels that support reliable sessions (for example, System.ServiceModel.NetNamedPipeBinding supports sessions but does not include reliable sessions).

各リスナー オブジェクトは、保留中の値に対してカウントされませんチャネル セッションのいずれかを指定できますMaxConcurrentSessionsまで WCF チャネル セッションを受け入れるしでメッセージの処理を開始します。Each listener object can have one pending channel session that does not count against the value of MaxConcurrentSessions until WCF accepts the channel session and begins processing messages on it. このプロパティは、セッションを使用するシナリオで最も有用です。This property is most useful in scenarios that make use of sessions.

このプロパティをクライアントのスレッド数より少ない値に設定すると、複数のクライアントからの要求が同じソケット接続でキューに置かれる場合があります。When this property is set to a value less than the number of client threads, the requests from multiple clients may get queued in the same socket connection. このサービスで開いているセッション数が MaxConcurrentSessions に達している場合、このサービスでセッションを作成していないクライアントからの要求は、他のクライアントとのセッションが閉じられるまでブロックされます。The requests from the client that has not created a session with the service will be blocked till the service closes its session with the other clients if number of open sessions on the service has reached MaxConcurrentSessions. 処理されないクライアント要求はタイムアウトになり、セッションが突然閉じられます。The client requests that are not served get timed out and the service closes the session abruptly.

この状況を回避するには、別のアプリケーション ドメインからクライアント スレッドを実行して、要求メッセージが別のソケット接続に送信されるようにします。To avoid this situation, run the client threads from different app domains so that the request messages go into different socket connections.

使用して、この属性の値を設定することも、 <serviceThrottling> アプリケーション構成ファイル内の要素。You can also set the values of this attribute by using the <serviceThrottling> element in an application configuration file.

適用対象