ServiceThrottlingBehavior.MaxConcurrentSessions Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia wartość określającą maksymalną liczbę sesji, ServiceHost które obiekt może akceptować jednocześnie.
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
Wartość właściwości
Maksymalna liczba sesji akceptowanych przez hosta usługi. Wartość domyślna to 100 razy więcej niż liczba procesorów.
Przykłady
Poniższy przykład kodu przedstawia użycie z ServiceThrottlingBehavior pliku konfiguracji aplikacji, który ustawia MaxConcurrentSessionswłaściwości , MaxConcurrentCallsi MaxConcurrentInstances na wartość 1 jako przykład. Środowisko rzeczywiste określa, jakie są optymalne ustawienia dla każdej konkretnej aplikacji.
<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>
Uwagi
Właściwość MaxConcurrentSessions określa maksymalną liczbę sesji, które ServiceHost może zaakceptować obiekt. Ważne jest, aby zrozumieć, że sesje w tym przypadku nie oznaczają tylko kanałów obsługujących niezawodne sesje (na przykład obsługuje sesje, System.ServiceModel.NetNamedPipeBinding ale nie obejmuje niezawodnych sesji).
Każdy obiekt odbiornika może mieć jedną oczekującą sesję kanału, która nie jest liczone względem wartości, MaxConcurrentSessions dopóki program WCF nie zaakceptuje sesji kanału i rozpocznie przetwarzanie komunikatów na nim. Ta właściwość jest najbardziej przydatna w scenariuszach korzystających z sesji.
Jeśli ta właściwość jest ustawiona na wartość mniejszą niż liczba wątków klienta, żądania od wielu klientów mogą zostać w kolejce w tym samym połączeniu gniazda. Żądania od klienta, który nie utworzył sesji z usługą, zostaną zablokowane do momentu zamknięcia sesji z innymi klientami, jeśli liczba otwartych sesji w usłudze osiągnęła MaxConcurrentSessions
wartość . Żądania klienta, które nie są obsługiwane, upłynął limit czasu, a usługa nagle zamyka sesję.
Aby uniknąć tej sytuacji, uruchom wątki klienta z różnych domen aplikacji, aby komunikaty żądania przechodziły do różnych połączeń gniazd.
Można również ustawić wartości tego atrybutu przy użyciu <elementu serviceThrottling> w pliku konfiguracji aplikacji.