ServiceThrottlingBehavior.MaxConcurrentSessions Eigenschap

Definitie

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.

Van toepassing op