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?

Другие вопросы по тегам