Um den Grund für die Verbindungsprobleme mit dem Server zu ermitteln, sollten folgende Frage geklärt werden:
Läuft der gRPC-Server?
Der gRPC-Server läuft standardmäßig auf einem lokalen Port (z. B. 9000). Ob der Server erreichbar ist, kann einfach über die PowerShell geprüft werden.
Befehl in PowerShell:
Test-NetConnection 127.0.0.1 -Port 9000
Typische Ausgabe:
ComputerName : 127.0.0.1
RemoteAddress : 127.0.0.1
RemotePort : 9000
InterfaceAlias : Loopback Pseudo-Interface 1
SourceAddress : 127.0.0.1
TcpTestSucceeded : True
Wichtig:
Wenn TcpTestSucceeded : True angezeigt wird, ist der gRPC-Server erreichbar und läuft.
Bei False ist der Server entweder nicht gestartet oder der Port nicht verfügbar.
Was bedeutet ein gRPC-Connection-Fehler beim Verbindungsaufbau?
Im FEP-Environment kann es vorkommen, dass beim Aufbau der gRPC-Verbindung folgende (auf den ersten Blick kryptische) Fehlermeldung erscheint:
gRPC Connection error: Unavailable - Error starting gRPC call.
HttpRequestException: An HTTP/2 connection could not be established because
the server did not complete the HTTP/2 handshake. (InvalidResponse)
HttpIOException: The response ended prematurely while waiting for the next frame
from the server. (ResponseEnded)
Mögliche Ursache:
Der konfigurierte Port (z. B. 9000) ist bereits durch einen anderen Prozess belegt. In diesem Fall kann der gRPC-Server den HTTP/2-Handshake nicht korrekt durchführen.
Wie kann ich prüfen, ob ein Port bereits belegt ist?
Über den netstat-Befehl in der PowerShell lassen sich alle Prozesse anzeigen, die einen bestimmten Port verwenden.
Befehl in PowerShell:
netstat -ano | findstr :9000
Beispielhafte Ausgabe:
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:9000 0.0.0.0:0 LISTENING 17616
Bedeutung der Spalten:
Local Address: Lokale IP und Port
State: Status (z. B. LISTENING)
PID: Prozess-ID, die den Port belegt
Wie finde ich heraus, welcher Prozess einen bestimmten Port benutzt?
Mit der ermittelten PID kann über PowerShell der zugehörige Prozess abgefragt werden, um u. a. den Prozessnamen und weitere Details zu erhalten.
Befehl in PowerShell:
get-process -id 17616
Info:
Alternativ kann der Prozess auch über den Windows Task-Manager anhand der PID identifiziert werden.
Empfohlene Lösungen
- Einen alternativen, freien Port für den gRPC-Server konfigurieren
- Oder (falls möglich) die Port-Konfiguration der blockierenden Software anpassen
- Nach der Änderung den Server erneut starten und die Verbindung testen