ServiceThrottlingBehavior.MaxConcurrentSessions Propiedad

Definición

Obtiene o establece un valor que especifica el número máximo de sesiones que un objeto ServiceHost puede aceptar en un momento dado.

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

Valor de propiedad

Int32

Número máximo de sesiones que un host de servicio acepta. El valor predeterminado es 100 veces el número de procesadores.

Ejemplos

El siguiente ejemplo de código muestra el uso de ServiceThrottlingBehavior desde un archivo de configuración de la aplicación que establece el valor 1 en MaxConcurrentSessions, MaxConcurrentCalls y las propiedades MaxConcurrentInstances, como ejemplo. La experiencia real determina cuáles son los valores óptimos para cualquier aplicación determinada.

<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>

Comentarios

La propiedad MaxConcurrentSessions especifica el número máximo de sesiones que un objeto ServiceHost puede aceptar. Es importante entender que las sesiones en este caso no significan sólo canales que admiten sesiones fiables (por ejemplo, System.ServiceModel.NetNamedPipeBinding admite sesiones pero no incluye sesiones fiables).

Cada objeto de agente de escucha puede tener una sesión de canal pendiente que no cuente con el valor de MaxConcurrentSessions hasta que WCF acepte la sesión del canal y comience a procesar los mensajes en él. Esta propiedad resulta muy útil en situaciones que utilizan sesiones.

Cuando esta propiedad está establecida con un valor menor que el número de subprocesos del cliente, las solicitudes de varios clientes se pueden poner en la cola en la misma conexión de socket. Las solicitudes del cliente que no ha creado una sesión con el servicio se bloquearán hasta que el servicio cierre su sesión con los otros clientes si el número de sesiones abiertas en el servicio ha alcanzado MaxConcurrentSessions. Las solicitudes de cliente que no se sirven caducan y el servicio cierra abruptamente la sesión.

Para evitar esta situación, ejecute los subprocesos del cliente desde dominios de aplicación diferentes para que los mensajes de solicitud entren en conexiones de socket diferentes.

También puede establecer los valores de este atributo mediante el <elemento serviceThrottling> en un archivo de configuración de la aplicación.

Se aplica a