ServiceThrottlingBehavior.MaxConcurrentSessions Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een waarde opgehaald of ingesteld waarmee het maximum aantal sessies wordt opgegeven dat een ServiceHost object tegelijk kan accepteren.
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
Waarde van eigenschap
Het maximum aantal sessies dat een servicehost accepteert. De standaardwaarde is 100 keer het aantal processoren.
Voorbeelden
In het volgende codevoorbeeld ziet u het gebruik van ServiceThrottlingBehavior een toepassingsconfiguratiebestand waarmee de MaxConcurrentSessions, MaxConcurrentCallsen MaxConcurrentInstances eigenschappen worden ingesteld op 1 als voorbeeld. Ervaring in de praktijk bepaalt wat de optimale instellingen zijn voor een bepaalde toepassing.
<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>
Opmerkingen
De MaxConcurrentSessions eigenschap geeft het maximum aantal sessies aan dat een ServiceHost object kan accepteren. Het is belangrijk om te begrijpen dat sessies in dit geval niet alleen kanalen betekenen die betrouwbare sessies ondersteunen (bijvoorbeeld System.ServiceModel.NetNamedPipeBinding sessies ondersteunt, maar geen betrouwbare sessies bevat).
Elk listenerobject kan één kanaalsessie in behandeling hebben die niet telt tegen de waarde van MaxConcurrentSessions totdat WCF de kanaalsessie accepteert en begint met het verwerken van berichten. Deze eigenschap is het handigst in scenario's die gebruikmaken van sessies.
Wanneer deze eigenschap is ingesteld op een waarde die kleiner is dan het aantal clientthreads, kunnen de aanvragen van meerdere clients in de wachtrij worden geplaatst in dezelfde socketverbinding. De aanvragen van de client die geen sessie met de service hebben gemaakt, worden geblokkeerd totdat de service de sessie met de andere clients sluit als het aantal geopende sessies op de service is bereikt MaxConcurrentSessions. Er is een time-out opgetreden voor de clientaanvragen die niet worden geleverd en de service sluit de sessie plotseling.
U kunt deze situatie voorkomen door de clientthreads uit te voeren vanuit verschillende app-domeinen, zodat de aanvraagberichten in verschillende socketverbindingen worden geplaatst.
U kunt ook de waarden van dit kenmerk instellen met behulp van het <servicebeperkingselement> in een toepassingsconfiguratiebestand.