"Не удалось выполнить попытку подключения, потому что связанная сторона не ответила должным образом через какое-то время", используя WebClient
Я использую следующий код, который работает на локальном компьютере, но когда я попробовал тот же код на сервере, он выдает мне ошибку
Не удалось выполнить попытку подключения, потому что связанная сторона не ответила должным образом через какое-то время или установив соединение не удалось, потому что подключенный хост не ответил
Вот мой код:
WebClient client = new WebClient();
// Add a user agent header in case the
// requested URI contains a query.
//client.Headers.Add ("ID", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
Stream data = client.OpenRead("http://" + Request.ServerVariables["HTTP_HOST"] + Request.ApplicationPath + "/PageDetails.aspx?ModuleID=" + ID);
StreamReader reader = new StreamReader(data);
string s = reader.ReadToEnd();
Console.WriteLine(s);
data.Close();
reader.Close();
Я получаю сообщение об ошибке
Stream data = client.OpenRead("http://" + Request.ServerVariables["HTTP_HOST"] + Request.ApplicationPath + "/PageDetails.aspx?ModuleID=" + ID);
Это связано с настройкой брандмауэра?
Ответы
Ответ 1
У меня была аналогичная проблема, и мне пришлось преобразовать URL-адрес из строки в объект Uri, используя:
Uri myUri = new Uri(URLInStringFormat, UriKind.Absolute);
(URLInStringFormat - ваш URL-адрес)
Попробуйте подключиться с помощью Uri вместо строки:
WebClient client = new WebClient();
client.OpenRead(myUri);
Ответ 2
явно указать адрес прокси в web.config
, чтобы решить мою проблему
<system.net>
<defaultProxy>
<proxy usesystemdefault = "false" proxyaddress="http://address:port" bypassonlocal="false"/>
</defaultProxy>
</system.net>
Устранение "Код ошибки TCP 10060: попытка подключения не удалась..." при использовании веб-службы
Ответ 3
Является ли URL-адрес этого кода доступным в браузере?
http://" + Request.ServerVariables["HTTP_HOST"] + Request.ApplicationPath + "/PageDetails.aspx?ModuleID=" + ID
Первое, что вам нужно проверить, это правильный URL-адрес. Затем проверьте в браузере, просматривается ли он. затем используйте инструмент Fiddler, чтобы проверить, что происходит по сети. Возможно, URL-адрес, который вызывается через код, ошибочно экранирован.
Затем проверьте связанные с брандмауэром проблемы.
Ответ 4
-
Первая возможность. Зашифрованная строка в связанном файле Web.config должна быть такой же, как и в строке подключения (которая показана выше)
А также, когда вы меняете что-либо в "Редакторе реестра" или regedit.exe
(как написано в "Запустить" ), после любых изменений закройте редактор реестра и reset ваши информационные службы Интернета, набрав IISRESET
при запуске. И затем войдите в свою среду.
-
Введите Service.msc при запуске и проверке:
-
Запускается состояние государственных служб ASP.NET. Если нет, щелкните по нему правой кнопкой мыши по свойствам, измените его тип запуска на автоматический.
-
Служба отчетов Iris ReportManager этого конкретного банка указана как "Запущена" или "Нет". Если его запуск, он отобразит "IRIS REPORT MANAGER SERVICE", как показано в списке. Если нет, то запустите его, нажав IRIS.REPORTMANAGER.EXE
Затем снова reset IIS
Ответ 5
Я знаю, что этот билет старый, но я просто столкнулся с этой проблемой, и я подумал, что буду публиковать то, что со мной происходит, и как я решил:
В моей службе я звонил, был вызов другой веб-службы. Как goof, я забыл убедиться, что настройки DNS были правильными, когда я опубликовал веб-сервис, поэтому мой веб-сервис при публикации пытался вызвать из api.myproductionserver.local, а не api.myproductionserver.com. Это был основной веб-сервис, который вызывал таймаут.
В любом случае, я думал, что пройду это.
Ответ 6
У меня была эта проблема. Код работал нормально при запуске локально, но не на сервере.
Использование psPing (https://technet.microsoft.com/en-us/sysinternals/psping.aspx) Я понял, что порт приложений ничего не возвращает.
Оказалось, что это проблема межсетевого экрана. Я не включил порт своих приложений в брандмауэре Windows.
Администрирование > Брандмауэр Windows с расширенной безопасностью
добавлен порт моих приложений в правила входящих и начал работать.
Как-то изменился номер порта приложения, поэтому потребовалось некоторое время, чтобы выяснить, что происходит, поэтому подумал, что я поделюсь этой возможностью, если это сэкономит кому-то еще время...
Ответ 7
Это может быть проблема с настройками прокси-сервера на сервере. Вы можете попробовать отключить настройку прокси-сервера,
<defaultProxy enabled="false" />
Ответ 8
Я знаю, что это сообщение было опубликовано 5 лет назад, но у меня недавно была эта проблема. Это может быть вызвано ограничениями корпоративной сети. Поэтому мое решение - позволить WebClient
пройти через прокси-сервер для совершения вызова. Вот код, который работал для меня. Надеюсь, поможет.
using (WebClient client = new WebClient())
{
client.Encoding = Encoding.UTF8;
WebProxy proxy = new WebProxy("your proxy host IP", port);
client.Proxy = proxy;
string sourceUrl = "xxxxxx";
try
{
using (Stream stream = client.OpenRead(new Uri(noaaSourceUrl)))
{
//......
}
}
catch (Exception ex)
{
throw;
}
}
Ответ 9
Я знаю, это старый пост, но я столкнулся с точно такой же проблемой, и мне удалось использовать это, MALWAREBYTES
программу MALWAREBYTES
которая вызывала проблему.
Ответ 10
Добавление следующего блока кода в web.config решает мою проблему
<system.net>
<defaultProxy enabled="false" >
</defaultProxy>
</system.net>