Http-запрос не выполняется из кода ASP.NET на тестовом сервере (также не выполняется в IE... но не в Firefox!?)
Я делаю HttpRequest на внешний сервер из моего приложения ASP.NET, например URL:
https://1.2.3.4:12345/Data/Users?Id=1
На сервере запущена служба, которая отвечает на эти запросы с помощью xml (например, веб-служба). Мой код делает запрос GET следующим образом:
var wc = new System.Net.WebClient();
wc.Credentials = credentials; // username and password for service
// get data from server.
string s = Encoding.ASCII.GetString(wc.DownloadData(url));
return s;
Он отлично работает на моей машине разработки.
Но на моей тестовой машине (старый Windows Server 2003 64 box) происходит сбой с этим исключением:
System.Net.WebException: базовое соединение было закрыто: при отправке произошла непредвиденная ошибка.
---> System.IO.IOException: невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом.
---> System.Net.Sockets.SocketException: существующее соединение было принудительно закрыто удаленным хостом
Гугл говорит мне, что ошибка имеет около миллиона возможных причин. Ни один, кажется, не применяется.
Подробности:
- Я могу сделать запрос, вставив URL-адрес в браузер, и это работает на сервере Dev, но на тестовом сервере он работает в Firefox, но не в IE (!?!). IE выдает универсальный "Internet Explorer не может отобразить веб-страницу". " - выглядит точно так же, если я изменю IP-адрес на что-то, чего не существует.
- Сервер защищен самозаверяющим сертификатом SSL, который был добавлен в хранилище доверенных сертификатов на локальном компьютере на обоих клиентах (поля test и dev). Но это вряд ли проблема с сертификатом, так как он отлично работает на dev, и все же происходит, если вы игнорируете проверку сертификата (на тесте).
- Я могу telnet к серверу (с правильным IP и портом) из окна Test.
Может кто-нибудь предложить что-нибудь попробовать? Возможная причина? Способ сузить это немного?
1 ответ
Я наконец нашел соответствующую ошибку в журнале событий windows сервера:
Запрос на подключение TLS 1.0 был получен от удаленного клиентского приложения, но ни один из наборов шифров, поддерживаемых клиентским приложением, не поддерживается сервером. Запрос на соединение SSL не выполнен.
Я создал новый вопрос, действительно отвечающий: здесь: как добавить наборы шифров, доступные для клиента ASP.NET HttpRequest?