Я сделал приложение 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, но могу ошибаться ...
Любая помощь будет оценена по достоинству! Заранее спасибо! Джоэри.
.Net 4.0 не поддерживает обновление async await до 4.5 или выше, и он будет работать нормально. Я считаю, что ваш локальный компьютер работает на более поздней версии .net, поэтому приложение работает без проблем на вашем персональном компьютере.
@JoeriAkkerman, вы можете перейти по этой ссылке stackoverflow.com/questions/4567060/… и выполнить автономное развертывание.
@cecilmerrelakabringrainfire, возможно ли это сделать и для 32-битной версии, потому что на этой странице: blogs.msdn.com/b/dotnet/archive/2014/04/02/… говорится, что я должен выбрать x64 или ARM (следите за обновлениями для x86), значит ли это, что невозможно использовать .NET native для архитектур x86, и поэтому он не может работать в 32-битной системе?
@JoeriAkkerman да, теперь это возможно. Статья, на которую вы ссылаетесь, относится к 2014 году. Последняя документация по ядру .net находится здесь docs.microsoft.com/en-us/dotnet/core/about
Проблема в том, что у меня нет прав на установку чего-либо на машину ... Есть ли другой способ заставить это работать?