Почему не выполняется проверка имени домена и порта моего SMTP-сервера при работе в качестве службы в локальной учетной записи системы?

Вопрос:

Если я запустил этот блок кода через консольное приложение, работающее с привилегиями администратора, он работает нормально:

 public static bool ValidSMTP(string hostName, int port)
{
bool valid = false;
TcpClient smtpTest = new TcpClient();
smtpTest.Connect(hostName, port);
if (smtpTest.Connected)
{
NetworkStream ns = smtpTest.GetStream();
StreamReader sr = new StreamReader(ns);
if (sr.ReadLine().Contains("220"))
{
valid = true;
}
smtpTest.Close();
}
return valid;
}

Но когда я пытаюсь запустить его из своей службы, расположенной в каталоге C:\Code:\ServiceTesting\bin\ServiceHost.exe, под локальной системной учетной записью, он не может проверить сервер и тайм-аут со следующим сообщением при вызове smtpTest. Подключиться: попытка подключения завершилась неудачно, потому что связанная сторона не ответила должным образом через какое-то время или установив соединение не удалось, потому что подключенный хост не смог ответить.

Лучший ответ:

Вы пытались запустить его из консольного приложения или службы одновременно? Кроме того, вы могли бы протестировать оба подхода, сделав серию запросов на сбор статистики?

Дело в том, что это может помочь изолировать проблему от разных факторов, отличных от разных пользователей ОС, таких как различные сетевые проблемы и т.д.

Не стесняйтесь давать новые подробности после этого, если вы сможете узнать что-то новое или интересное.

Оцените статью
TechArks.Ru
Добавить комментарий