Aby ustalić przyczynę problemów z połączeniem z serwerem, należy rozważyć następujące pytania:
Czy serwer gRPC działa?
Serwer gRPC działa domyślnie na lokalnym porcie (np. 9000). Czy serwer jest osiągalny, można łatwo sprawdzić za pomocą PowerShell.
Polecenie w PowerShell:
Test-NetConnection 127.0.0.1 -Port 9000
Typowa odpowiedź:
ComputerName : 127.0.0.1
RemoteAddress : 127.0.0.1
RemotePort : 9000
InterfaceAlias : Loopback Pseudo-Interface 1
SourceAddress : 127.0.0.1
TcpTestSucceeded : True
Ważne:
Jeżeli TcpTestSucceeded : True zostanie wyświetlone, serwer gRPC jest osiągalny i działa.
W przypadku False, serwer nie jest uruchomiony albo port nie jest dostępny.
Co oznacza błąd połączenia gRPC podczas nawiązywania połączenia?
W środowisku FEP może się zdarzyć, że podczas nawiązywania połączenia gRPC pojawi się następujący (na pierwszy rzut oka kryptograficzny) komunikat o błędzie:
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)
Możliwa przyczyna:
Skonfigurowany port (np. 9000) jest już zajęty przez inny proces. W takim przypadku serwer gRPC nie może prawidłowo przeprowadzić handshake HTTP/2.
Jak mogę sprawdzić, czy port jest już zajęty?
Za pomocą polecenia netstat w PowerShell można wyświetlić wszystkie procesy, które wykorzystują konkretny port.
Polecenie w PowerShell:
netstat -ano | findstr :9000
Przykładowa odpowiedź:
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:9000 0.0.0.0:0 LISTENING 17616
Znaczenie kolumn:
Local Address: Lokalny IP i port
State: Stan (np. LISTENING)
PID: ID procesu, który zajmuje port
Jak mogę ustalić, który proces używa danego portu?
Za pomocą ustalonego PID można w PowerShell uzyskać informacje o odpowiednim procesie, aby m.in. uzyskać nazwę procesu i inne szczegóły.
Polecenie w PowerShell:
get-process -id 17616
Informacje:
Alternatywnie, proces można zidentyfikować za pomocą Menedżera zadań systemu Windows za pomocą PID.
Zalecane rozwiązania
- Skonfigurowanie alternatywnego, wolnego portu dla serwera gRPC
- Lub (jeśli to możliwe) dostosowanie konfiguracji portu blokującego oprogramowania
- Po zmianie ponownie uruchom serwer i przetestuj połączenie