0

これらを正しくテストしているかどうかはよくわかりませんが、バインディングの (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)
                }
            }
        }
    }

私もトレースを有効にして、何かが変わったかどうかを監視しようとしましたが、何も目に留まりませんでした。

4

1 に答える 1