Я пытаюсь создать программу для загрузки 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?