ServiceThrottlingBehavior.MaxConcurrentSessions Propriedade

Definição

Obtém ou define um valor que especifica o número máximo de sessões que um objeto ServiceHost pode aceitar simultaneamente.

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

Int32

O número máximo de sessões que um host de serviço aceita. O padrão é 100 vezes a contagem de processadores.

Exemplos

O exemplo de código a seguir mostra o uso de um arquivo de configuração de ServiceThrottlingBehavior aplicativo que define as MaxConcurrentSessionsMaxConcurrentCallspropriedades e MaxConcurrentInstances as propriedades como 1 como exemplo. A experiência do mundo real determina quais são as configurações ideais para qualquer aplicativo específico.

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

Comentários

A MaxConcurrentSessions propriedade especifica o número máximo de sessões que um ServiceHost objeto pode aceitar. É importante entender que as sessões nesse caso não significam apenas canais que dão suporte a sessões confiáveis (por exemplo, dão suporte a sessões, System.ServiceModel.NetNamedPipeBinding mas não incluem sessões confiáveis).

Cada objeto ouvinte pode ter uma sessão de canal pendente que não conta com o valor de MaxConcurrentSessions até que o WCF aceite a sessão do canal e comece a processar mensagens nele. Essa propriedade é mais útil em cenários que usam sessões.

Quando essa propriedade é definida como um valor menor que o número de threads do cliente, as solicitações de vários clientes podem ser enfileiradas na mesma conexão de soquete. As solicitações do cliente que não criou uma sessão com o serviço serão bloqueadas até que o serviço feche sua sessão com os outros clientes se o número de sessões abertas no serviço tiver atingido MaxConcurrentSessions. As solicitações de cliente que não são atendidas ficam com o tempo limite e o serviço fecha a sessão abruptamente.

Para evitar essa situação, execute os threads do cliente de diferentes domínios de aplicativo para que as mensagens de solicitação entrem em diferentes conexões de soquete.

Você também pode definir os valores desse atributo usando o <elemento serviceThrottling> em um arquivo de configuração de aplicativo.

Aplica-se a