У меня есть простая служба WCF, которая передает изображения клиенту. На клиенте первый запрос на изображение занимает около 5,5 секунд, а затем последующие запросы занимают около 40 мс, что отлично.Задержка запроса WCF каждые 50 секунд
Однако через каждые 45 секунд независимо от того, были ли выполнены какие-либо запросы, следующий запрос всегда занимает около 4,6 секунды. Этот 45-секундный цикл повторяется непрерывно.
Я использую привязку net.tcp с потоковым режимом передачи. Я также попробовал буферный режим передачи с включенными/без надежных сеансов, но все это увеличило время, затрачиваемое на каждый запрос.
Я попытался увеличить каждый тайм-аут связывания (открыть, закрыть, отправить, получить, бездействие) без каких-либо изменений.
конфигурации сервера:
serviceHost = new ServiceHost(typeof(TServiceImplementation), serviceUri);
serviceHost.Description.Behaviors.Add(new ServiceMetadataBehavior() { HttpGetEnabled = false });
var netTCPBinding = new NetTcpBinding(SecurityMode.Transport);
netTCPBinding.TransferMode = TransferMode.StreamedResponse;
netTCPBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows;
serviceHost.AddServiceEndpoint(typeof(TServiceContract), netTCPBinding, ServiceName);
serviceHost.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexTcpBinding(), "mex");
Клиент конфигурации:
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="TcpBinding" transferMode="StreamedResponse" maxReceivedMessageSize="2147483647" />
</netTcpBinding>
</bindings>
<client>
<endpoint address="net.tcp://hostname:9000/StreamService"
binding="netTcpBinding" bindingConfiguration="TcpBinding" contract="StreamService.IStream"
name="NetTcpBinding_IStream" />
</client>
</system.serviceModel>
UPDATE: Похоже, что это может быть машина конкретный вопрос - когда я запускаю службу на моей локальной машине я не испытываю Эта проблема.
Изменение периодов времени будет влиять только на то, как долго система будет ожидать ответа до объявления ошибки, она не влияет на скорость вашего ответа, это звучит так, как ваш пул приложений перерабатывается, что приведет к удалению службы и ее воссозданию требующий нескольких секунд времени работы, поэтому я бы посмотрел ваши настройки IIS – MikeT
Он работает как служба Windows, поэтому это, вероятно, не проблема. – irv075