Невозможно использовать HttpClient для загрузки html с. Net Ядро, автономное в Win7 (. Net Framework 2.0) - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь создать программу для загрузки html с C#, целевой машиной является Win 7 и установлена ​​только. 1010 * framework 2.0. Мне нужно использовать некоторые современные функции, которые не поддерживаются. net famework 2.0 (WPF), поэтому я решил использовать. net core 3.1 и опубликовал его как самостоятельный. Как я и ожидал, WPF может работать хорошо, но WebClient не работает.

System.Net.WebException: An invalid argument was supplied
 ---> System.Net.Http.HttpRequestException: An invalid argument was supplied
 ---> System.Net.Sockets.SocketException (10022): An invalid argument was supplied
   at System.Net.Sockets.Socket..ctor(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType)
   at System.Net.Sockets.DualSocketMultipleConnectAsync..ctor(SocketType socketType, ProtocolType protocolType)
   at System.Net.Sockets.Socket.ConnectAsync(SocketType socketType, ProtocolType protocolType, SocketAsyncEventArgs e)
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
   at System.Net.HttpWebRequest.SendRequest()
   at System.Net.HttpWebRequest.GetResponse()
   --- End of inner exception stack trace ---
   at System.Net.HttpWebRequest.GetResponse()
   at System.Net.WebClient.GetWebResponse(WebRequest request)
   at System.Net.WebClient.OpenRead(Uri address)
   at System.Net.WebClient.OpenRead(String address)

Как я знаю, WebClient поддерживается в. net framework 2.0, но из стека транса я вижу, что он вызывает HttpClient, и используя asyn c методы, мой тестовый код

try
{
    WebClient webClient = new WebClient();
    Stream data = webClient.OpenRead(url);
    StreamReader reader = new StreamReader(data);
    string ss = reader.ReadToEnd();
    Console.WriteLine(ss);
    data.Close();
    reader.Close();
}
catch (Exception e)
{
    Console.WriteLine(e);
}

Я просто опубликовал sh как автономный, и запустил его в. net framework 2.0, и получил ошибку. Кто-нибудь знает, почему WebClient вызывает HttpClient здесь? Как я могу использовать WebClient под. net famework 2.0 in. net core?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...