我不太确定我是否正确地测试了这些,但我正在尝试确定(关闭、接收、发送、打开)超时之一对服务绑定的影响。
我以编程方式设置值,因为我更喜欢基于配置的值,所以请不要建议我将其放回配置文件中。
为了测试极端情况,我尝试将 Timeout 设置为 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)
}
}
}
}
我也启用了跟踪,并一直在尝试监视它以查看是否有任何变化,但没有任何东西引起我的注意。