SocketException при попытке выполнить HTTPRequest в C#

Я сделал приложение Windows Forms для компании, в которой работаю. На моем ноутбуке и ПК программа работает нормально, но когда я попытался установить ее на компьютер моей компании, все пошло не так.

Я создал программу с .NET Framework 4.6.1, и текущая версия Framework на ПК в компании, в которой я работаю, - это версия 4.0. Из-за этой разницы в версии у меня возникли ошибки. Мне удалось исправить все ошибки, кроме одной ...

Я хочу сделать резервную копию локальных данных, хранящихся на веб-сервере (сервер 000webhost). Опять же, все это отлично работает на моем собственном ноутбуке, даже когда я подключаюсь к WIFI в своей компании, на моем компьютере все работает нормально. Но на ПК компании дела пошли не так ... Я получаю исключение при попытке сделать резервную копию.

Я искал в Google любые решения, но, к сожалению, безуспешно. Был только один результат, который сказал мне что-то об этом исключении: парень написал, что объект HttpClient должен быть статическим, и я не должен использовать предложение using ().

Мой текущий код:

private static HttpClient client;
public Parser(Form1 form)
{
      client = new HttpClient();
}




private async Task<int> backup()
    {
        try
        {
                var data = new FormUrlEncodedContent(new[]
                {
                    new KeyValuePair<string, string>("license", license),
                    new KeyValuePair<string, string>("json", text),
                    new KeyValuePair<string, string>("date", DateTime.Today.ToString("dd/MM/yyyy"))
                });
                var response = await client.PostAsync(URL + "makebackup.php", data);
                string content = await response.Content.ReadAsStringAsync();
                Response result = JsonConvert.DeserializeObject<Response>(content);
                return result.result;
        }
        catch (HttpRequestException)
        {
            form.showMessageBox("Kon geen backup maken door het ontbreken van een internet verbinding");
        }
        return -1;
    }

public async Task<CheckVersionResult> checkVersion()
        {
            try
            {
                var data = new FormUrlEncodedContent(new[]
                {
                    new KeyValuePair<string, string>("version", form.mrtVersion)
                });
                var response = await client.PostAsync(URL + "checkversion.php", data);
                string content = await response.Content.ReadAsStringAsync();
                CheckVersionResult result = JsonConvert.DeserializeObject<CheckVersionResult>(content);
                return result;
            }
            catch (HttpRequestException)
            {
                form.showMessageBox("Je hebt een internetverbinding nodig om dit programma te kunnen gebruiken");
                return null;
            }
        }

К сожалению, сообщение об ошибке было написано на голландском языке, поэтому большинство из вас не могут прочитать сообщение об ошибке полностью. Самая важная строка, вероятно, первая из трассировки стека, которая переведена на английский язык: «SocketException (0x80004005): предоставлен недопустимый аргумент».

Сообщение об ошибке

Zie het einde van dit bericht voor meer informatie over het aanroepen 
van JIT-foutopsporing (Just In Time) in plaats van dit dialoogvenster.
************** Tekst van uitzondering **************
System.Net.Sockets.SocketException (0x80004005): Er is een ongeldig argument opgegeven
   bij System.Net.SafeCloseSocketAndEvent.CreateWSASocketWithEvent(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType, Boolean autoReset, Boolean signaled)
   bij System.Net.NetworkAddressChangePolled..ctor()
   bij System.Net.AutoWebProxyScriptEngine.AutoDetector.Initialize()
   bij System.Net.AutoWebProxyScriptEngine.AutoDetector.get_CurrentAutoDetector()
   bij System.Net.AutoWebProxyScriptEngine..ctor(WebProxy proxy, Boolean useRegistry)
   bij System.Net.WebProxy.UnsafeUpdateFromRegistry()
   bij System.Net.Configuration.DefaultProxySectionInternal..ctor(DefaultProxySection section)
   bij System.Net.Configuration.DefaultProxySectionInternal.GetSection()

************** Geladen assembly's **************
mscorlib
    Assembly-versie: 4.0.0.0
    Win32-versie: 4.7.2117.0 built by: NET47REL1LAST
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
----------------------------------------
MRT
    Assembly-versie: 1.0.0.0
    Win32-versie: 1.0.0.0
    CodeBase: file:///O:/DKW/MRT%20(Medewerkers%20Resultaten%20Tool)/release%202/MRT.exe
----------------------------------------
System.Windows.Forms
    Assembly-versie: 4.0.0.0
    Win32-versie: 4.7.2114.0 built by: NET47REL1LAST
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Assembly-versie: 4.0.0.0
    Win32-versie: 4.7.2114.0 built by: NET47REL1LAST
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Assembly-versie: 4.0.0.0
    Win32-versie: 4.7.2053.0 built by: NET47REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
    Assembly-versie: 4.0.0.0
    Win32-versie: 4.7.2053.0 built by: NET47REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Core
    Assembly-versie: 4.0.0.0
    Win32-versie: 4.7.2117.0 built by: NET47REL1LAST
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml
    Assembly-versie: 4.0.0.0
    Win32-versie: 4.7.2102.0 built by: NET47REL1LAST
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Windows.Forms.DataVisualization
    Assembly-versie: 4.0.0.0
    Win32-versie: 4.7.2053.0
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.DataVisualization/v4.0_4.0.0.0__31bf3856ad364e35/System.Windows.Forms.DataVisualization.dll
----------------------------------------
CircularProgressBar
    Assembly-versie: 2.5.6403.13419
    Win32-versie: 2.5
    CodeBase: file:///O:/DKW/MRT%20(Medewerkers%20Resultaten%20Tool)/release%202/CircularProgressBar.DLL
----------------------------------------
WinFormAnimation
    Assembly-versie: 1.5.6298.3372
    Win32-versie: 1.5
    CodeBase: file:///O:/DKW/MRT%20(Medewerkers%20Resultaten%20Tool)/release%202/WinFormAnimation.DLL
----------------------------------------
System.Windows.Forms.DataVisualization.resources
    Assembly-versie: 4.0.0.0
    Win32-versie: 4.7.2053.0
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.DataVisualization.resources/v4.0_4.0.0.0_nl_31bf3856ad364e35/System.Windows.Forms.DataVisualization.resources.dll
----------------------------------------
System.Net.Http
    Assembly-versie: 4.0.0.0
    Win32-versie: 4.7.2053.0 built by: NET47REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Net.Http/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Net.Http.dll
----------------------------------------
Newtonsoft.Json
    Assembly-versie: 11.0.0.0
    Win32-versie: 11.0.2.21924
    CodeBase: file:///O:/DKW/MRT%20(Medewerkers%20Resultaten%20Tool)/release%202/Newtonsoft.Json.DLL
----------------------------------------
System.Numerics
    Assembly-versie: 4.0.0.0
    Win32-versie: 4.7.2053.0 built by: NET47REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
----------------------------------------
System.Runtime.Serialization
    Assembly-versie: 4.0.0.0
    Win32-versie: 4.7.2106.0 built by: NET47REL1LAST
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Serialization/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll
----------------------------------------
System.Data
    Assembly-versie: 4.0.0.0
    Win32-versie: 4.7.2102.0 built by: NET47REL1LAST
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_64/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.resources
    Assembly-versie: 4.0.0.0
    Win32-versie: 4.7.2053.0 built by: NET47REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.resources/v4.0_4.0.0.0_nl_b77a5c561934e089/System.resources.dll
----------------------------------------
mscorlib.resources
    Assembly-versie: 4.0.0.0
    Win32-versie: 4.7.2053.0 built by: NET47REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_nl_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------
System.Windows.Forms.resources
    Assembly-versie: 4.0.0.0
    Win32-versie: 4.7.2053.0 built by: NET47REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_nl_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
************** JIT-foutopsporing **************
Als u JIT-foutopsporing wilt inschakelen, moet in het configuratiebestand voor deze
toepassing of computer (machine.config) de waarde
jitDebugging in het gedeelte system.windows.forms zijn ingesteld.
De toepassing moet ook zijn gecompileerd terwijl foutopsporing
was ingeschakeld.
Bijvoorbeeld:
<configuration>
    <system.windows.forms jitDebugging = "true" />
</configuration>
Wanneer JIT-foutopsporing is ingeschakeld, worden onverwerkte uitzonderingen
naar het JIT-foutopsporingsprogramma gestuurd dat op de computer is geregistreerd
en worden niet door dit dialoogvenster verwerkt.

На компьютере компании установлена ​​32-разрядная версия Windows 4.7.2117.0, созданная: NET47REL1LAST. Все функции заблокированы администратором, поэтому я не могу ничего проверить в информации о системе и, к сожалению, не могу ничего установить на этот компьютер ... Я предполагаю, что проблема как-то связана с версия .NET Framework, но могу ошибаться ...

Любая помощь будет оценена по достоинству! Заранее спасибо! Джоэри.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
506
1

Ответы 1

.Net 4.0 не поддерживает обновление async await до 4.5 или выше, и он будет работать нормально. Я считаю, что ваш локальный компьютер работает на более поздней версии .net, поэтому приложение работает без проблем на вашем персональном компьютере.

Проблема в том, что у меня нет прав на установку чего-либо на машину ... Есть ли другой способ заставить это работать?

Joeri Akkerman 31.10.2018 00:40

@JoeriAkkerman, вы можете перейти по этой ссылке stackoverflow.com/questions/4567060/… и выполнить автономное развертывание.

cecil merrel aka bringrainfire 31.10.2018 01:06

@cecilmerrelakabringrainfire, возможно ли это сделать и для 32-битной версии, потому что на этой странице: blogs.msdn.com/b/dotnet/archive/2014/04/02/… говорится, что я должен выбрать x64 или ARM (следите за обновлениями для x86), значит ли это, что невозможно использовать .NET native для архитектур x86, и поэтому он не может работать в 32-битной системе?

Joeri Akkerman 31.10.2018 01:19

@JoeriAkkerman да, теперь это возможно. Статья, на которую вы ссылаетесь, относится к 2014 году. Последняя документация по ядру .net находится здесь docs.microsoft.com/en-us/dotnet/core/about

cecil merrel aka bringrainfire 31.10.2018 01:34

Другие вопросы по теме