HttpWebRequest.GetResponse。无法与服务器建立连接

HttpWebRequest.GetResponse. Unable to establish a connection to the server

我在 c# 中使用 HTTPWebRequest 连接到 .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 应用程序中使用 netstandard 项目。服务器是 IIS。 现在,当使用我的私有 IP 从我的机器调用到服务器(我的机器)时,这段代码可以工作。 当我更改运行应用程序的机器以及服务器时(服务器再次与应用程序在同一台机器上),我得到

System.Net.WebException: An error occurred while sending the request. The text associated with this error code could not be found. A connection with the server could not be established

我检查过 Url 是正确的,当我在 PostMan 中执行 post 时它有效。我还启用了“Private networks Client&Sever capabilities on UWP app” 可能是什么问题?

编辑:

the inner exception is: " An error occurred while sending the request"

Hresult:-2147012867

Status:UnknownError

解决方案是为应用程序添加环回豁免。由于网络隔离,一些 UWP 应用程序被限制使用 IP 环回地址。

来自 this link 的第 8 步。

Due to network isolation, UWP apps like App Installer are restricted to use IP loopback addresses like http://localhost/. When using local IIS Server, App Installer must be added to the loopback exempt list.

在我的例子中,我必须为我的应用添加环回豁免。

  1. 找出应用程序包名称。它应该在这个文件夹中 %LOCALAPPDATA%\Packages
  2. 以管理员身份打开命令提示符
  3. 检查应用程序是否在豁免列表中。 CheckNetIsolation.exe LoopbackExempt -s
  4. 如果没有,那么: CheckNetIsolation.exe LoopbackExempt -d -n="<your package name>"
  5. 要确认豁免,请再次执行步骤 3。