Sdílet prostřednictvím


ServiceThrottlingBehavior.MaxConcurrentSessions Vlastnost

Definice

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

Int32

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.

Platí pro