ServiceThrottlingBehavior.MaxConcurrentSessions Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient ou définit une valeur qui spécifie le nombre maximal de sessions qu'un objet ServiceHost peut accepter à la fois.
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
Valeur de propriété
Nombre maximal de sessions qu'un hôte de service accepte. La valeur par défaut est 100 fois le nombre de processeurs.
Exemples
L'exemple de code suivant illustre l'utilisation de ServiceThrottlingBehavior à partir d'un fichier de configuration de l'application qui affecte aux propriétés MaxConcurrentSessions, MaxConcurrentCalls et MaxConcurrentInstances la valeur 1 en guise d'exemple. L'expérience détermine les paramètres optimaux pour toute application particulière.
<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>
Remarques
La propriété MaxConcurrentSessions spécifie le nombre maximal de sessions qu'un objet ServiceHost peut accepter. Il est important de comprendre que, dans ce cas, les sessions ne signifient pas uniquement les canaux qui prennent en charge des sessions fiables (par exemple, System.ServiceModel.NetNamedPipeBinding prend en charge des sessions mais n'inclut pas de sessions fiables).
Chaque objet écouteur peut avoir une session de canal en attente qui ne compte pas par rapport à la valeur jusqu’à MaxConcurrentSessions ce que WCF accepte la session de canal et commence à traiter les messages sur celui-ci. Cette propriété est surtout utile dans les scénarios qui utilisent des sessions.
Lorsque cette propriété est affectée à une valeur inférieure au nombre de threads clients, les demandes de plusieurs clients peuvent être mises en file d'attente dans la même connexion de socket. Les demandes du client qui n'a pas créé de session avec le service sont bloquées jusqu'à ce que le service ferme sa session avec les autres clients si le nombre de sessions ouvertes sur le service a atteint la valeur MaxConcurrentSessions
. Les demandes du client qui ne sont pas servies arrivent à expiration et le service ferme subitement la session.
Pour éviter cette situation, exécutez les threads clients à partir de différents domaines d'application afin que les messages de demande passent par des connexions de socket différentes.
Vous pouvez également définir les valeurs de cet attribut à l’aide de l’élément <serviceThrottling> dans un fichier de configuration d’application.