Сбой веб-запроса в консольном приложении при запуске по расписанию задачи расписания - PullRequest
1 голос
/ 01 сентября 2011

У нас есть простое консольное приложение, написанное на C # .NET 4.0, которое в настоящее время выполняется по расписанию.Это консольное приложение просто берет файлы из одного непосредственно на диск, а затем загружает их на веб-сайт ASP.NET, размещенный на том же компьютере.

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

Message: Unable to connect to the remote server
Stack Trace:    at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
   at System.Net.HttpWebRequest.GetRequestStream()
   at Program.Main(String[] args) in Program.cs:line 69
Inner Exception: System.Net.Sockets.SocketException (0x80004005): No connection could be made because the target machine actively refused it 127.0.0.1:80
   at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
   at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)

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

У нас естьфайл хоста, настроенный в настоящее время для домена, к которому он пытается подключиться, указывает на обратный IP-адрес, который вы видите в исключении.Это происходит из-за конфигурации брандмауэра, которая не допускает внутренних подключений к внешнему IP.

Дополнительная информация о запланированном задании:

  • Он настроен для запуска с учетными данными администратора и с самыми высокими разрешениями.
  • Он запускается только один раз в день
  • Он без проблем выполняет другие операции (перемещение и переименование файлов)
  • Ошибка возникает в HttpWebRequest.GetRequestStream ()

Ответы [ 3 ]

2 голосов
/ 09 сентября 2011

В итоге это оказалось очень странной ситуацией, и решение другой проблемы оказалось тем, что решило эту.

То, что получилось, оказалось тем, что в итоге оказалось запланированным заданием, которое выполнялось в то же время, что и принудительное восстановление IIS.Что ж, сброс IIS произойдет, и пока он пытается запустить резервное копирование, этот процесс попытается загрузить файл.Разумеется, загрузка завершится неудачно с указанным выше сообщением об ошибке, так как в конечном итоге ничего не прослушивалось на порте 80 во время запуска службы IIS.

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

0 голосов
/ 17 марта 2017

Я получаю похожую ошибку с WebClient:

Невозможно подключиться к удаленному serverSystem.Net.Sockets.SocketException (0x80004005): попытка подключения не удалась, поскольку подключенная сторона не ответила должным образомпосле определенного периода времени или не удалось установить соединение, так как подключенный хост не смог ответить 123.456.789.000:80

У меня была запланированная задача «Выполнить, вошел ли пользователь в систему или нет», и это не помоглос кодом (2).

Я изменил его на «Запускать только когда пользователь вошел в систему», и это разрешило его.

0 голосов
/ 08 сентября 2011

Вам необходимо проверить, кто использует порт 80. Проверить, работает ли Skype?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...