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

时间:2019-01-28 11:13:18

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

我正在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:发送请求时发生错误。   找不到与此错误代码关联的文本。一种   无法与服务器建立连接

我检查了网址是否正确,当我在PostMan中发帖时可以使用。我还启用了UWP应用上的“ Private networks Client&Sever capabilities” 可能是什么问题?

编辑:

  

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

     

结果:-2147012867

     

状态:未知错误

1 个答案:

答案 0 :(得分:0)

解决方案是为该应用添加环回豁免。由于网络隔离,某些UWP应用只能使用IP回送地址。

this link的步骤8开始。

  

由于网络隔离,UWP应用(如App Installer)受到限制   使用http://localhost/之类的IP回送地址。使用本地时   IIS服务器应用安装程序必须添加到环回豁免列表中。

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

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