ServiceThrottlingBehavior.MaxConcurrentSessions Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví hodnotu, která určuje maximální počet relací ServiceHost , které může objekt přijmout najednou.
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
Hodnota vlastnosti
Maximální počet relací, které hostitel služby přijímá. Výchozí hodnota je 100krát počet procesorů.
Příklady
Následující příklad kódu ukazuje použití z konfiguračního ServiceThrottlingBehavior souboru aplikace, který nastaví MaxConcurrentSessions, MaxConcurrentCallsa MaxConcurrentInstances vlastnosti na 1 jako příklad. Prostředí z reálného světa určuje, jaká jsou optimální nastavení pro jakoukoli konkrétní aplikaci.
<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>
Poznámky
Vlastnost MaxConcurrentSessions určuje maximální počet relací, ServiceHost které může objekt přijmout. Je důležité pochopit, že relace v tomto případě neznamená pouze kanály, které podporují spolehlivé relace (například podporuje relace, System.ServiceModel.NetNamedPipeBinding ale nezahrnuje spolehlivé relace).
Každý objekt naslouchacího MaxConcurrentSessions procesu může mít jednu čekající relaci kanálu, která se nepočítá s hodnotou, dokud WCF nepřipojí relaci kanálu a začne na ní zpracovávat zprávy. Tato vlastnost je nejužitečnější ve scénářích, které využívají relace.
Pokud je tato vlastnost nastavena na hodnotu menší než počet vláken klienta, požadavky z více klientů se můžou dostat do fronty ve stejném připojení soketu. Požadavky od klienta, který nevytvořil relaci se službou, se zablokují, dokud služba zavře svou relaci s ostatními klienty, pokud dosáhla počtu otevřených relací ve službě MaxConcurrentSessions
. Požadavky klientů, které nejsou obsluhovány, vyprší časový limit a služba relaci náhle zavře.
Pokud se chcete této situaci vyhnout, spusťte klientská vlákna z různých domén aplikací, aby zprávy požadavku přešly do různých připojení soketů.
Hodnoty tohoto atributu můžete také nastavit pomocí elementu <serviceThrottling> v konfiguračním souboru aplikace.