У нас есть очень упрощенная служба WCF (называемая ACS), размещенная как служба Windows на коробке с Windows 2003.Этот сервис предоставляет конечную точку Http.Мы используем TopShelf для настройки хоста Windows, настроенного как служба Windows.При запуске этой службы она отправляет сообщение «Регистрация» другой службе WCF, которая размещается в отдельном окне в IIS.Однако это регистрационное сообщение от ACS службе IIS / WCF не передается, и ACS не запускается.Мы получаем ошибку:
Превышен тайм-аут канала запроса при попытке отправки после 00:02:00.Увеличьте значение тайм-аута, передаваемое вызову Request, или увеличьте значение SendTimeout в Binding.Время, выделенное для этой операции, могло быть частью более длительного тайм-аута. Внутреннее исключение: HTTP-запрос к «{конечной точке IIS WCF на основе http здесь}» превысил установленное время ожидания 00:00:00.Время, отведенное для этой операции, могло быть частью более длительного тайм-аута.
Если мы удалим этот стартовый вызов из ACS, то ACS запускается и работает нормально.Веб-служба может обращаться к ACS, если это необходимо, и выполнять работу.
Это наш пример кода для запуска ACS (_acs, _ars и т. Д. Передаются как зависимости конструктора)
HostFactory.Run(c =>
{
c.Service<IACSInterface>(s =>
{
s.ConstructUsing(() => _acs);
s.WhenStarted(x =>
{
_serviceHost = new ServiceHost(x);
_serviceHost.Open();
string domainName = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().DomainName;
string fullyQualifiedMachineName = System.Net.Dns.GetHostName() + "." + domainName;
_ars.RegisterMachine(fullyQualifiedMachineName, AgentStatus.Available.ToString());
});
s.WhenStopped(x =>
{
if (_serviceHost != null && (_serviceHost.State != CommunicationState.Closed && _serviceHost.State != CommunicationState.Closing))
_serviceHost.Close();
});
});
c.SetDisplayName("servicename");
c.SetServiceName("realSErviceName");
c.SetDescription("The service that does something awesome.");
c.RunAsLocalSystem();
c.StartAutomatically();
}
Служба настроена на автоматический запуск и настроена вручную для запуска под учетной записью домена, которая является локальной администратором в Windows 2003 Box.
Хотя мы можем увеличить значение времени ожидания, я не хочудайте ему бесконечный тайм-аут.Я хотел бы знать, в чем причина такого поведения и какое наилучшее разрешение для этого.