ServiceThrottlingBehavior.MaxConcurrentSessions Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft einen Wert ab, der die maximale Anzahl an Sitzungen angibt, die ein ServiceHost-Objekt gleichzeitig akzeptiert.
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
Eigenschaftswert
Die maximale Anzahl an Sitzungen, die ein Diensthost akzeptiert. Der Standardwert ist das 100-fache der Prozessoranzahl.
Beispiele
Im folgenden Codebeispiel wird die Verwendung des ServiceThrottlingBehavior aus einer Anwendungskonfigurationsdatei gezeigt, wobei die MaxConcurrentSessions, MaxConcurrentCalls-Eigenschaft und die MaxConcurrentInstances-Eigenschaft als Beispiel auf 1 festgelegt werden. Die optimalen Einstellungen für eine bestimmte Anwendung finden Sie durch praktische Erfahrung heraus.
<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>
Hinweise
Die MaxConcurrentSessions-Eigenschaft gibt die maximale Anzahl der Sitzungen an, die ein ServiceHost-Objekt akzeptieren kann. Beachten Sie, dass mit Sitzungen in diesem Fall nicht nur Kanäle gemeint sind, die zuverlässige Sitzungen unterstützen (so unterstützt z. B. System.ServiceModel.NetNamedPipeBinding Sitzungen, enthält jedoch keine zuverlässigen Sitzungen).
Jedes Listenerobjekt kann eine ausstehende Kanalsitzung aufweisen, die nicht mit dem Wert von MaxConcurrentSessions gezählt wird, bis WCF die Kanalsitzung akzeptiert und mit der Verarbeitung von Nachrichten beginnt. Diese Eigenschaft ist höchst nützlich in Szenarien, die Sitzungen nutzen.
Wenn diese Eigenschaft auf einen Wert festgelegt wird, der unter der Anzahl der Clientthreads liegt, werden die Anforderungen von mehreren Clients möglicherweise in derselben Socketverbindung in eine Warteschlange gestellt. Die Anforderungen von dem Client, der keine Sitzung mit dem Dienst erstellt hat, wird so lange blockiert, bis der Dienst seine Sitzung mit den anderen Clients geschlossen hat, wenn die Anzahl der geöffneten Sitzungen in dem Dienst MaxConcurrentSessions
erreicht hat. Bei Clientanforderungen, die nicht behandelt werden, tritt eine Zeitüberschreitung auf, und der Dienst schließt sofort die Sitzung.
Um diese Situation zu vermeiden, sollten Sie die Clientthreads über verschiedene Anwendungsdomänen ausführen, sodass die Anforderungsnachrichten zu verschiedenen Socketverbindungen geleitet werden.
Sie können die Werte dieses Attributs auch mithilfe des <serviceThrottling-Elements> in einer Anwendungskonfigurationsdatei festlegen.