これらを正しくテストしているかどうかはよくわかりませんが、バインディングの (Close、Receive、Send、Open) のいずれかのタイムアウトがサービスに与える影響を判断しようとしています。
構成ベースよりも優先するため、プログラムで値を設定しています。構成ファイルに戻すことはお勧めしません。
極端なテストを行うために、タイムアウトを 1 秒に設定して、何があってもヒットするようにしています。
しかし、これが事実であるかどうかはわかりません
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
ServiceThrottlingBehavior behavior = new ServiceThrottlingBehavior();
behavior.MaxConcurrentCalls = 1000;
behavior.MaxConcurrentInstances = 1000;
behavior.MaxConcurrentSessions = 1000;
serviceDescription.Behaviors.Add(behavior);
foreach (var endpoint in serviceDescription.Endpoints)
{
var binding = endpoint.Binding;
binding.CloseTimeout = TimeSpan.FromSeconds(1);
binding.ReceiveTimeout = TimeSpan.FromSeconds(1);
binding.SendTimeout = TimeSpan.FromSeconds(1);
binding.OpenTimeout = TimeSpan.FromSeconds(1);
endpoint.Binding = binding;
}
foreach (ChannelDispatcher cd in serviceHostBase.ChannelDispatchers)
{
foreach (EndpointDispatcher ed in cd.Endpoints)
{
if (!ed.IsSystemEndpoint)
{
ed.DispatchRuntime.InstanceProvider = new MyProvider(serviceDescription.ServiceType)
}
}
}
}
私もトレースを有効にして、何かが変わったかどうかを監視しようとしましたが、何も目に留まりませんでした。