myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Netzwerktechnologien » [gelöst] gRPC als Service
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

[gelöst] gRPC als Service

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
thomas.at thomas.at ist männlich
myCSharp.de-Mitglied

Dabei seit: 19.09.2005
Beiträge: 98
Entwicklungsumgebung: Visual Studio 2017
Herkunft: Österreich / Wien


thomas.at ist offline

[gelöst] gRPC als Service

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von thomas.at am 26.03.2019 08:47.

21.03.2019 14:35 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
trashkid2000 trashkid2000 ist männlich
myCSharp.de-Mitglied

Dabei seit: 27.12.2010
Beiträge: 156


trashkid2000 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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...
21.03.2019 23:27 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
thomas.at thomas.at ist männlich
myCSharp.de-Mitglied

Dabei seit: 19.09.2005
Beiträge: 98
Entwicklungsumgebung: Visual Studio 2017
Herkunft: Österreich / Wien

Themenstarter Thema begonnen von thomas.at

thomas.at ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
26.03.2019 08:47 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
trashkid2000 trashkid2000 ist männlich
myCSharp.de-Mitglied

Dabei seit: 27.12.2010
Beiträge: 156


trashkid2000 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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?
26.03.2019 21:42 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 8 Monate.
Der letzte Beitrag ist älter als 8 Monate.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 11.12.2019 06:23