myCSharp.de - DIE C# und .NET Community (https://www.mycsharp.de/wbb2/index.php)
- Entwicklung (https://www.mycsharp.de/wbb2/board.php?boardid=3)
-- Netzwerktechnologien (https://www.mycsharp.de/wbb2/board.php?boardid=28)
--- [gelöst] gRPC als Service (https://www.mycsharp.de/wbb2/thread.php?threadid=121706)


Geschrieben von thomas.at am 21.03.2019 um 14:35:
  [gelöst] gRPC als Service
Hallo

Ich möchte aus einer .ASP NET-Core Application auf ein bestehendes Service (.Net FW 4.6.1) zugreifen. Ich habe mich hier für die Kommunikation mittels gRPC entschieden. Mein Server sieht wie folgt aus:

C#-Code:
      string IP = "0.0.0.0";
      int Port = 23116;
      try
      {
        Server server = new Server
        {
          Services =
        {
          GRPC_Test.BindService(new Test_GRPC())
        },
          Ports = { new ServerPort(IP, Port, ServerCredentials.Insecure) }
        };
        server.Start();
        service.EventLog.WriteEntry($"API-Server auf {IP}:{Port} gestartet");
      }
      catch (Exception ex)
      {
        service.EventLog.WriteEntry("API-Server konnte nicht gestartet werden");
        service.EventLog.WriteEntry(ex.Message);
      }

und der Client so:

C#-Code:
      int Port = 23116;
      //string IP = "127.0.0.1";                                // localhost
      string IP = "10.xx.xx.xx";                               // Server-IP

      Channel channel = new Channel(IP, Port, ChannelCredentials.Insecure);
      var client = new GRPC_Test.GRPC_TestClient(channel);

Wenn ich das ganze im Visualstudio (mit der lokalen IP im Client) laufen lasse, dann funktioniert alles wunderbar (HTTP-Request via Postman liefert richtigen Reply). Kopiere ich die EXE auf den Server, starte diese in einem CMD-Fenster und lasse den Client in VS laufen, dann funktioniert es auch wie es soll. Installiere ich die EXE aber am Server als Service, dann bekomme ich im Client nach einiger Zeit eine Exception mit folgendem Inhalt:

Fehlermeldung:
RpcException: Status(StatusCode=Cancelled, Detail="Cancelled")

und der Stacktrace zeigt auf die aufrufende Funktion. Leider konnte ich auch nichts über Google hierzu finden, daher hier meine Bitte um Hilfe. Vielleicht wissen ja die Gurus unter Euch, wo der Fehler verborgen ist.

mfg
Thomas


Geschrieben von trashkid2000 am 21.03.2019 um 23:27:
 
Um den Fehler eingrenzen zu können, müsste man sich wohl mal das ganze Netzwerkprotokoll ansehen... also wirklich, was sendet der Client, und was bekommt er dann vom Server.

Sonst ist das alles nur ganz viel rätselraten...


Geschrieben von thomas.at am 26.03.2019 um 08:47:
 
Hallo

das Netzwerkprotokoll habe ich mir angesehen. Leider sieht man daraus nicht viel, da der Client natürlich immer dasselbe sendet. Wenn ich die Application im Commandfenster laufen lasse, dann kommt halt nach einigen Millisekunden die richtige Antwort, beim Service nach einigen Minuten der Reply mit HTTPResponse 200 und gRPCStatus 1. Dazwischen liegt das Service, das halt nichts macht.

Ich habe aber gestern noch einiges im Internet recheriert und bin dabei auf das Topshelf-Projekt ( Topshelf) gestossen. Damit habe ich den Server neu aufgesetzt und jetzt funktioniert alles (Kommunikation über TCP für die alten WindowsClients und über gRPC für die Web-Applikation).

mfg Thomas


Geschrieben von trashkid2000 am 26.03.2019 um 21:42:
 
Hi,

okay, vielen Dank für die Antwort erstmal :-)
Für alle, die das gleiche Problem haben, wirklich sehr hilfreich Daumen hoch

Aber was die Bibliothek anders macht, das kannst Du nicht evaluieren?


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 23.02.2020 01:37