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.
在我的例子中,我必须为我的应用添加环回豁免。
- 找出应用程序包名称。它应该在这个文件夹中 %LOCALAPPDATA%\Packages
- 以管理员身份打开命令提示符
- 检查应用程序是否在豁免列表中。
CheckNetIsolation.exe LoopbackExempt -s
- 如果没有,那么:
CheckNetIsolation.exe LoopbackExempt -d -n="<your package name>"
- 要确认豁免,请再次执行步骤 3。
我在 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.
在我的例子中,我必须为我的应用添加环回豁免。
- 找出应用程序包名称。它应该在这个文件夹中 %LOCALAPPDATA%\Packages
- 以管理员身份打开命令提示符
- 检查应用程序是否在豁免列表中。
CheckNetIsolation.exe LoopbackExempt -s
- 如果没有,那么:
CheckNetIsolation.exe LoopbackExempt -d -n="<your package name>"
- 要确认豁免,请再次执行步骤 3。