Benutzer mit den meisten Antworten
Erreichbarkeit eines Serves prüfen

Frage
-
Hallo,
darf ich nochmal mein altes Thema unter
aufwärmen? Es ging darum, zu testen, ob ein bestimmter Server erreichbar ist. Mit dem Code von Florian schien alles perfekt gelöst.
Private Function GetResponse() As Boolean Dim err As Boolean = False Dim client As WebClient = New WebClient() ServicePointManager.ServerCertificateValidationCallback = Function(se As Object, cert As System.Security.Cryptography.X509Certificates.X509Certificate, chain As System.Security.Cryptography.X509Certificates.X509Chain, sslerror As System.Net.Security.SslPolicyErrors) True Try ServicePointManager.ServerCertificateValidationCallback = New Net.Security.RemoteCertificateValidationCallback(Function() True) Dim data = client.DownloadData("https://kvlink1.kv-safenet.de:8443/kvcserver/rest/server/version") Catch ex As Exception err = True Finally client.Dispose() End Try ServicePointManager.ServerCertificateValidationCallback = Nothing If Not err Then pi.IconChange(My.Resources.armin1) Thread.Sleep(180000) End If pi.IconChange(My.Resources.armin2) GetResponse() End Function
Jetzt weigert sich ein WIN 7 Rechner bei einem User hartnäckig, zu funktionieren. Im Firefox gibt der Server
https://kvlink1.kv-safenet.de:8443/kvcserver/rest/server/version
problemlos die Versionsnummer zurück. Mit meinem Tool erhalte ich keine Daten. Bevor ich mir die Mühe mache, den Code umzuschreiben und Messageboxen einzubauen, wollte ich euch fragen, ob ihr vielleicht eine Idee habt, woran das liegen könnte.
Viele Grüße Norbert
- Bearbeitet Stefan FalzModerator Montag, 2. Juli 2018 13:13 Link als Link eingefügt
Antworten
-
Hi,
ich denke, dass die SSL/TLS Einstellungen auf dem Client nicht passen. Der Server verlangt wohl eine neuere TLS Version (bspw. TLS 1.1 oder 1.2), die Anwendung arbeitet aber auf dem betreffenden System mit einer niedrigeren Version (bspw. SSL 3).
Probier mal, die Angaben in deiner Anwendung entsprechend anzupassen.
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 oder ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
Es kann aber sein, dass auf dem Client noch ein Patch installiert werden muss, damit das funktioniert.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Als Antwort markiert norbert3 Dienstag, 3. Juli 2018 16:46
Alle Antworten
-
Vielleicht doch besser der ganze Code?
Imports System.Threading Imports System.Net Public Class PingApplication Inherits ApplicationContext Private pi As ProcessIcon Public Sub New() pi = New ProcessIcon() pi.Display(My.Resources.armin2) CheckConnection() End Sub Private Sub CheckConnection() Dim t As Thread = New Thread(AddressOf GetResponse) t.IsBackground = True t.Start() End Sub Private Function GetResponse() As Boolean Dim err As Boolean = False Dim client As WebClient = New WebClient() ServicePointManager.ServerCertificateValidationCallback = Function(se As Object, cert As System.Security.Cryptography.X509Certificates.X509Certificate, chain As System.Security.Cryptography.X509Certificates.X509Chain, sslerror As System.Net.Security.SslPolicyErrors) True Try ServicePointManager.ServerCertificateValidationCallback = New Security.RemoteCertificateValidationCallback(Function() True) Dim data = client.DownloadData("https://kvlink1.kv-safenet.de:8443/kvcserver/rest/server/version") Catch ex As Exception err = True Finally client.Dispose() End Try ServicePointManager.ServerCertificateValidationCallback = Nothing If Not err Then pi.IconChange(My.Resources.armin1) Thread.Sleep(180000) End If pi.IconChange(My.Resources.armin2) GetResponse() End Function Protected Overrides Sub Dispose(disposing As Boolean) If disposing Then If pi IsNot Nothing Then pi.Dispose() End If End If MyBase.Dispose(disposing) End Sub End Class
-
Hallo Norbert,
ich tippe mal auf einen Proxy, der im Firefox aber nicht im System eingestellt ist.
Aber mal so gesagt: Was willst Du mit irgendwelchen Messageboxen? Ignorier einfach nicht sämtliche Fehlerdetails, setz einen Breakpoint auf die Zeile "err = True" und schau dir an, was in ex.ToString() steht.
Alternativ (wenn Du auf dem Rechner nicht debuggen kannst), schreib einfach ein Log, wenn ein Fehler auftritt.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Montag, 2. Juli 2018 13:15
-
Hallo Norbert,
wenn der systemseitig eingestellt Proxy verwendet wird, sollte das eigentlich dann in deiner .NET Anwendung auch klappen, es sei denn, die Proxyeinstellungen wurden dort überschrieben.
Da das nicht klappt, probier mal das hier in deine app.config einzutragen:
<configuration> ... <system.net> <defaultProxy> <proxy usesystemdefault="True" proxyaddress="http://1.2.3.4:8080" bypassonlocal="True" /> </defaultProxy> </system.net> ... </configuration>
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Montag, 2. Juli 2018 13:27
-
Hallo Norbert,
natürlich die echte IP bzw. den Servernamen (und natürlich auch den richtigen Port) des Proxies.
Du kannst proxyaddress auch erstmal weglassen und ggfs. noch autoDetect="True" hinzufügen. Wenn das dann immer noch nicht klappt, proxyaddress nochmal hinzufügen und autoDetect wegnehmen.
Wenn das dann immer noch nicht geht, poste bitte die exakte und vollständige Fehlermeldung, die Du erhältst.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Guten Morgen,
beim Problem-User geht es nicht mit autoDetect. Es kommt die Exception
Die war bestimmt auch schon vorher da, ich hatte aber keine Messagebox drin und konnte sie nicht sehen. Sollte ich jetzt proxyaddress versuchen? Oder kannst Du an der Fehlermeldung erkennen, ob es vielleicht in eine andere Richtung geht?
-
Hallo,
mir fallen da zwei Möglichkeiten ein.
- In der app.config den Eintrag für den Default Proxy ergänzen:
<system.net> <defaultProxy useDefaultCredentials="true" /> </system.net>
- im Code:
webClient.UseDefaultCredentials = true; webClient.Proxy = WebRequest.GetSystemWebProxy();
Sollte beides funktionieren, sonst bleibt natürlich immer noch die Abfrage des Proxy beim Benutzer, bzw. diesen wie bereits erwähnt in der App.config zu hinterlegen und nur die Credentials (Nutzer/Passwort) abzufragen.
- Bearbeitet Florian Haupt Dienstag, 3. Juli 2018 06:55 Formatierung nach senden kaputt
- In der app.config den Eintrag für den Default Proxy ergänzen:
-
Hi,
ich denke, dass die SSL/TLS Einstellungen auf dem Client nicht passen. Der Server verlangt wohl eine neuere TLS Version (bspw. TLS 1.1 oder 1.2), die Anwendung arbeitet aber auf dem betreffenden System mit einer niedrigeren Version (bspw. SSL 3).
Probier mal, die Angaben in deiner Anwendung entsprechend anzupassen.
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 oder ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
Es kann aber sein, dass auf dem Client noch ein Patch installiert werden muss, damit das funktioniert.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Als Antwort markiert norbert3 Dienstag, 3. Juli 2018 16:46
-
Hier die App.config nach Florian:
<?xml version="1.0" encoding="utf-8"?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7"/></startup> <system.net> <defaultProxy useDefaultCredentials="true" /> </system.net> </configuration>
Und hier die Exception:
Ich probier jetzt den Vorschlag von Stefan ...
-
Hallo Norbert,
die Zeile mit ServicePointManager.SecurityProtocol kommt dorthin, wo auch deine andere Zeile mit ServicePointManager.ServerCertificateValidationCallback steht. Dachte, das wär klar, daher hatte ich das nicht extra nochmal erwähnt^^
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
Das funktioniert leider nicht
Dim err As Boolean = False Dim client As WebClient = New WebClient() client.UseDefaultCredentials = True client.Proxy = WebRequest.GetSystemWebProxy ServicePointManager.ServerCertificateValidationCallback = Function(se As Object, cert As System.Security.Cryptography.X509Certificates.X509Certificate, chain As System.Security.Cryptography.X509Certificates.X509Chain, sslerror As System.Net.Security.SslPolicyErrors) True Try ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 ServicePointManager.ServerCertificateValidationCallback = New Security.RemoteCertificateValidationCallback(Function() True) Dim data = client.DownloadData("https://kvlink1.kv-safenet.de:8443/kvcserver/rest/server/version") Catch ex As Exception err = True MessageBox.Show(ex.ToString) Finally client.Dispose() End Try
Mit Tls12 geht es auf meinem Rechner. Schiebe es jetzt zum User ...
-
Hallo Norbert,
was heißt "geht nicht"? Kommt dann auch der Fehler wie oben mit dem SSL/TLS Kanal?
Falls ja, arbeitet die Gegenstelle nur noch mit TLS 1.2 und evtl. höher. In dem Fall kann es aber wie bereits geschrieben sein, dass Du ein Windows Update auf dem Windows 7 Rechner installieren musst, damit TLS 1.2 überhaupt unterstützt wird.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
Und was muss ich sagen: Es funktioniert!!!
Ich bin vor Freude fast auf den Tisch gesprungen. Unglaublich, wie Du das machst Stefan. Solch Durchblick werde ich wohl niemals bekommen. Ein Glück, dass ich dieses Forum habe ...
Viele ganz herzliche Grüße
Norbert
-
Hallo Norbert,
prima, das freut uns, dass es nun klappt.
Und denk dran: Nur auf Tische springen, die das auch aushalten :)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
Hallo Norbert,
Der WIN 7 Rechner wird eigentlich regelmäßig geupdated.
dieses Update war unter Umständen nur als optionales Update vorhanden, daher gibt es schon einige Rechner, die das nicht drauf haben.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport