HttpWebRequest.GetResponse. Невозможно установить соединение с сервером

Я использую 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();

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

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

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

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

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

Hresult: -2147012867

Статус:UnknownError

1 ответ

Решение

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

С шага 8 этой ссылки.

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

В моем случае я должен был добавить исключение обратной петли для моего приложения.

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