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