Служба Windows не работает при соединении net.tcp, но консольное приложение работает нормально

Я создал службу, которая импортирует и обрабатывает данные с сервера SQL и вводит их в SYSPRO. Все отлично работало как на локальной машине, так и на сервере в качестве консольного приложения. Когда я превратил консольное приложение в службу, оно отлично работает на моей машине после того, как я дал ему правильные логины. Когда я впервые разместил службу на сервере, она выдавала мне ошибку DNS, когда я пытался войти в клиент SYSPRO, даже при правильном входе в систему.

private SYSPROWCFServicesPrimitiveClient eNetSession = 
new SYSPROWCFServicesPrimitiveClient("net.tcp://{serverName}:20000/SYSPROWCFService/Soap", 
SYSPROWCFBinding.NetTcp);

Я изменил имя сервера на localhost, его адрес и локальный адрес, который больше не возвращал ошибку DNS, но не инициализировал клиента SYSPRO. Тем не менее, у него нет проблем с SQL Server, который находится на другом сервере. Я думаю, что это строка подключения, но не уверен, что я делаю неправильно, поскольку строка подключения отлично работает на сервере как консольное приложение. Мое единственное другое предположение состоит в том, что у службы, возможно, нет доступа к net.tcp. Любая мысль?

ОБНОВИТЬ

Похоже, DNS настроен правильно, так как я могу пропинговать другой сервер и самого себя. Одна и та же строка подключения используется как на консоли, так и на сервере, и единственное сообщение об ошибке, которое я получаю от службы, показано на изображении ниже.

введите здесь описание изображения


person thatguy    schedule 23.08.2017    source источник


Ответы (1)


Звучит как контекст безопасности. Проверьте учетную запись, на использование которой настроена служба Windows (локальная система, сетевая служба и т. д.). Попробуйте изменить учетную запись на пользователя, который запускает консольное приложение.

Консольные приложения по умолчанию запускаются с использованием учетной записи вошедшего в систему пользователя. Службы Windows, с другой стороны, должны быть правильно настроены, поскольку они не устанавливаются с текущими учетными данными пользователя.

Для проверки... Нажмите Пуск->Выполнить->services.msc Посмотрите на столбец "Войти как"... если он отличается от пользователя, который вошел на станцию, измените его на эту учетную запись.

person Goose    schedule 24.08.2017
comment
Он настроен на запуск под LocalSystem (я знаю, риск безопасности) во время установки. После установки я регистрирую службу в учетной записи сетевого агента, которую другие службы и программы также используют для связи между серверами. - person thatguy; 24.08.2017
comment
И я знаю, что консольные приложения запускаются под локальными учетными записями пользователей, и проблема не в консольном приложении. Но на моей локальной машине копия службы работает и работает отлично. Проблема не возникает, пока я не установлю службу на сервер SYSPRO. В это время он может получить доступ к серверу SQL просто отлично, но не может получить доступ к себе. Я могу пропинговать себя из командной строки, поэтому DNS, я не думаю, является проблемой, однако, похоже, он не может создать или даже найти клиента SYSPRO на сервере SYSPRO, но отлично работает везде. - person thatguy; 24.08.2017
comment
Но это сработало, я вошёл в систему, как я, исправил проблему. Теперь мне просто нужно выяснить, почему сетевой агент не работает. Спасибо! - person thatguy; 24.08.2017