У меня есть служба WCF, разработанная с помощью .NET 4.0. В поведении у меня есть этот элемент регулирования:
<behavior name="Test">
<serviceThrottling maxConcurrentInstances="1000"/>
</behavior>
Насколько мне известно из этого: WCF 4: настройки регулирования по умолчанию для служб WCF
MaxConcurrentSessions: по умолчанию 100 * ProcessorCount MaxConcurrentCalls: по умолчанию 16 * ProcessorCount
На моем ПК у меня есть Environment.ProcessorCount = 2
Затем я добавил код, который считывает конфигурацию этих двух значений, поскольку я не добавлял значения явно, я ожидаю, что они будут по умолчанию.
Как я проверяю это из Global.asax:
protected void Application_Start(object sender, EventArgs e)
{
var config = WebConfigurationManager.OpenWebConfiguration("/TestDefaults");
var bindings = BindingsSection.GetSection(config);
var group = ServiceModelSectionGroup.GetSectionGroup(config);
foreach (ServiceBehaviorElement behavior in group.Behaviors.ServiceBehaviors)
{
if (behavior.Name == "Test")
{
var th = ((ServiceThrottlingElement)behavior.Where(el => el is ServiceThrottlingElement).FirstOrDefault());
if (th != null)
{
File.AppendAllText(Server.MapPath("~/Result.txt"),
String.Format("MaxConcurrentCalls {0} MaxConcurrentSessions {1}",
th.MaxConcurrentCalls,
th.MaxConcurrentSessions));
}
}
}
}
Результат:
MaxConcurrentCalls 16 MaxConcurrentSessions 100
Теперь я немного запутался, что такое значения по умолчанию? Может быть, эта проверка неверна? Заранее спасибо.