HttpWebRequest.GetResponse.Невозможно установить соединение с сервером - PullRequest
0 голосов
/ 28 января 2019

Я использую HTTPWebRequest в c # для подключения к серверу в проекте .netStandard.

Код.

byte[] buffer = Encoding.ASCII.GetBytes(data);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

// Send request
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = buffer.Length;
request.CookieContainer = cookies;

Stream postData = request.GetRequestStream();

postData.Write(buffer, 0, buffer.Length);
postData.Close();

// Get and return response
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Stream Answer = response.GetResponseStream();
StreamReader answer = new StreamReader(Answer);
string ans = answer.ReadToEnd();

Я использую netstandardпроект в приложении UWP.Сервер IIS.Теперь этот код работает при вызове с моего компьютера на сервер (мой компьютер) с использованием моего частного IP.Когда я меняю компьютер, на котором выполняется приложение, а также сервер (сервер снова находится на том же компьютере, что и приложение), я получаю

System.Net.WebException: при отправке произошла ошибказапрос.Текст, связанный с этим кодом ошибки, не найден.Не удалось установить соединение с сервером

Я проверил, что URL-адрес правильный, и он работает, когда я пишу сообщение в PostMan.Я также включил «Private networks Client&Sever capabilities в приложении UWP». В чем может быть проблема?

Редактировать:

Внутреннее исключение: «Произошла ошибкапри отправке запроса "

Hresult: -2147012867

Статус: UnknownError

1 Ответ

0 голосов
/ 04 февраля 2019

Решение было Добавить исключение обратной петли для приложения.Из-за изоляции сети некоторые приложения UWP ограничены использованием IP-адресов обратной связи.

Начиная с шага 8 эта ссылка .

Из-за изоляции сети UWPприложения, такие как App Installer, могут использовать IP-адреса обратной связи, такие как http://localhost/.. При использовании локального сервера IIS необходимо добавить App Installer в список исключений обратной петли.

В моем случае мне пришлосьдобавить исключение обратной связи для МОЕГО приложения.

  1. Узнайте имя пакета приложения.Он должен находиться внутри этой папки% LOCALAPPDATA% \ Packages
  2. Открыть командную строку как ADMIN
  3. Проверить, находится ли приложение в списке исключений.CheckNetIsolation.exe LoopbackExempt -s
  4. Если нет, то: CheckNetIsolation.exe LoopbackExempt -d -n="<your package name>"
  5. Чтобы подтвердить освобождение, повторите шаг 3.
...