ServiceThrottlingBehavior.MaxConcurrentSessions Egenskap

Definition

Hämtar eller anger ett värde som anger det maximala antalet sessioner som ett ServiceHost objekt kan acceptera samtidigt.

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

Egenskapsvärde

Det maximala antalet sessioner som en tjänstvärd accepterar. Standardvärdet är 100 gånger processorantalet.

Exempel

I följande kodexempel visas användningen av ServiceThrottlingBehavior från en programkonfigurationsfil som anger MaxConcurrentSessionsegenskaperna , MaxConcurrentCallsoch MaxConcurrentInstances till 1 som exempel. Verklig upplevelse avgör vilka de optimala inställningarna är för ett visst program.

<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>

Kommentarer

Egenskapen MaxConcurrentSessions anger det maximala antalet sessioner som ett ServiceHost objekt kan acceptera. Det är viktigt att förstå att sessioner i det här fallet inte bara innebär kanaler som stöder tillförlitliga sessioner (till exempel System.ServiceModel.NetNamedPipeBinding stöder sessioner men inte innehåller tillförlitliga sessioner).

Varje lyssnarobjekt kan ha en väntande kanalsession som inte räknas mot värdet MaxConcurrentSessions för förrän WCF accepterar kanalsessionen och börjar bearbeta meddelanden på den. Den här egenskapen är mest användbar i scenarier som använder sessioner.

När den här egenskapen är inställd på ett värde som är mindre än antalet klienttrådar kan begäranden från flera klienter placeras i kö i samma socketanslutning. Begäranden från klienten som inte har skapat en session med tjänsten blockeras tills tjänsten stänger sin session med de andra klienterna om antalet öppna sessioner i tjänsten har nått MaxConcurrentSessions. De klientbegäranden som inte hanteras överskrider tidsgränsen och tjänsten stänger sessionen plötsligt.

Undvik den här situationen genom att köra klienttrådarna från olika appdomäner så att begärandemeddelandena hamnar i olika socketanslutningar.

Du kan också ange värdena för det här attributet med hjälp av elementet< serviceThrottling> i en programkonfigurationsfil.

Gäller för