ServiceThrottlingBehavior.MaxConcurrentSessions Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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.