SocketException при попытке сделать HTTPRequest в C # - PullRequest
0 голосов
/ 31 октября 2018

Я создал приложение 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.

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

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

1 Ответ

0 голосов
/ 31 октября 2018

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

...