2013-03-19 3 views
2

У кого-нибудь есть идея о том, как я мог получить, через код, текущую настройку maxConcurrentSessions на службе WCF на основе сеанса?Получение текущего значения по умолчанию maxConcurrentSessions установки

Я хотел был бы получить это значение, даже если maxConcurrentSessions не установлен в файле конфигурации службы, другими словами, я хотел бы получить значение по умолчанию в этом случае.

В основном я пытаюсь доказать без каких-либо сомнений, что значение по умолчанию для maxConcurrentSessions в моей текущей среде.

Спасибо!

ответ

3

Хитрость заключается в том, чтобы установить некоторые из throttlingBehavior атрибутов в конфигурационном файле, но оставить maxConcurrentSessions из:

<serviceThrottling maxConcurrentCalls="100" maxConcurrentInstances="100"/> 

затем на сервере:

ServiceHost host = new ServiceHost(typeof(MyService)); 

string msg = "Service Behaviors:" + Environment.NewLine; 
foreach (IServiceBehavior behavior in host.Description.Behaviors) 
{ 
    msg += behavior.ToString() + Environment.NewLine; 

    if (behavior is ServiceThrottlingBehavior) 
    { 
     ServiceThrottlingBehavior serviceThrottlingBehavior = (ServiceThrottlingBehavior)behavior; 
     msg += "  maxConcurrentSessions = " + serviceThrottlingBehavior.MaxConcurrentSessions.ToString() + Environment.NewLine; 
    } 
} 
EventLog.WriteEntry("My Log Source", msg, EventLogEntryType.Information); 

это дает мне 800. Что поддерживает документацию там, где указано, что по умолчанию используется 100 * nb процессоров для WCF 4.0 и выше.

+0

Просто установите запись прямо: с [MSDN] (http://msdn.microsoft.com/en-us/library/system.servicemodel.description.servicethrottlingbehavior.maxconcurrentsessions.aspx) говорится, что из .NET 4.5: Значение по умолчанию в 100 раз превышает количество процессоров. " тогда как для .NET 4.0 [MSDN] (http://msdn.microsoft.com/en-us/library/system.servicemodel.description.servicethrottlingbehavior.maxconcurrentsessions (v = vs.100) .aspx) говорится: «По умолчанию используется 10.» :) –

1

this статья может быть полезной ... внизу находится раздел по чтению дроссельных значений.

Вам необходимо сделать это на стороне сервера (например, внутри одного из ваших методов обслуживания). Кроме того, в образце он получает первый ChannelDispatcher .... для вашего конкретного сценария у вас может быть более 1 (неуверенный) в зависимости от того, что вы делаете, что может быть условием, которое вам также необходимо учитывать.

НТН, Натан

+0

Черт возьми, это близко к решению, я уверен, но я не получаю throttleBehavior, если в конфигурационном файле не установлено ни одного ... найденный трюк отправит его сейчас. – zukanta

Смежные вопросы