【问题标题】:HttpWebRequest.GetResponse. Unable to establish a connection to the serverHttpWebRequest.GetResponse。无法建立与服务器的连接
【发布时间】:2019-06-21 09:11:19
【问题描述】:

我在 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 从我的机器调用到服务器(我的机器)时,此代码可以工作。 当我更改运行应用程序的机器以及服务器时(服务器再次与应用程序在同一台机器上),我得到 ​​p>

System.Net.WebException:发送请求时出错。 找不到与此错误代码关联的文本。一种 无法与服务器建立连接

我检查了 URL 是否正确,并且当我在 PostMan 发帖时它可以工作。我还在 UWP 应用上启用了“Private networks Client&Sever capabilities” 可能是什么问题?

编辑:

内部异常是:“发送请求时发生错误”

结果:-2147012867

状态:未知错误

【问题讨论】:

  • WebException.InnerException 初始化了吗?
  • 是 "发送请求时出错" Hresult:-2147012867 Status:UnknownError

标签: c# httpwebrequest httpwebresponse system.net.webexception


【解决方案1】:

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

来自this link 的第 8 步。

由于网络隔离,应用安装程序等 UWP 应用受到限制 使用 IP 环回地址,例如 http://localhost/。使用本地时 必须将 IIS 服务器、应用安装程序添加到环回豁免列表中。

就我而言,我必须为我的应用添加环回豁免。

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

【讨论】:

    猜你喜欢
    • 2020-04-06
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 2018-08-09
    • 1970-01-01
    • 2021-03-02
    • 2015-06-13
    相关资源
    最近更新 更多