代码之家  ›  专栏  ›  技术社区  ›  Corey P

system.net.http.httprequestexception:设备未配置--->system.net.sockets.socketexception:设备未配置

  •  0
  • Corey P  · 技术社区  · 6 年前

    system.net.http.httprequestexception:设备未配置--->system.net.sockets.socketexception:设备未配置

    我在尝试从aspnet核心web应用程序的自定义中间件发出web请求时收到上述错误。错误出现在以下代码块的第四行:

    var web = new WebClient();
    var testing = _configuration.GetSection("IPStack")["AccessKey"];
    web.QueryString.Add("access_key", _configuration.GetSection("IPStack")["AccessKey"]);
    string ipstackRaw = web.DownloadString($"http://api.ipstack/{ipaddress}");
    

    我在Mac上使用的是Visual Studio社区版。是什么导致了这个错误?

    更新

    从最初的帖子开始我就尝试过一些事情,但都没有成功。以下是我尝试过的:

    • 在我的电脑(Windows 10)上的Visual Studio专业版中运行应用程序
    • 使用尝试请求 HttpClient
    • 在中间件外部尝试请求
    0 回复  |  直到 6 年前
        1
  •  1
  •   Demir Karic    6 年前

    我建议你用它 HttpWebRequest

       string apiKey = "YOUR_ACCESS_KEY";
            var request = (HttpWebRequest)WebRequest.Create("https://api.ipstack.com/134.201.250.155?access_key="+ apiKey);
            request.Method = "GET";
            request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36";
            request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
            request.Headers.Add("accept-language", "en,hr;q=0.9");
            request.Headers.Add("accept-encoding", "");
            request.Headers.Add("Upgrade-Insecure-Requests", "1");
            WebResponse response = request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
            string responseFromServer = reader.ReadToEnd();
            reader.Close();
            response.Close();
    
        2
  •  1
  •   Corey P    6 年前

    请确保正确键入请求uri。

    变化
    string ipstackRaw = web.DownloadString($"http://api.ipstack/{ipaddress}");

    string ipstackRaw = web.DownloadString($"http://api.ipstack.com/{ipaddress}");