Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
SignalR 3 - C# Client bringt 'Internal Server Error' während Javascript-Client funktioniert
Rioma
myCSharp.de - Member



Dabei seit:
Beiträge: 228

Themenstarter:

SignalR 3 - C# Client bringt 'Internal Server Error' während Javascript-Client funktioniert

beantworten | zitieren | melden

Hallo zusammen,

ich habe seit einigen Tagen ein Problem bezüglich SignalR in Version 3. Ich weiß Version 3 ist noch relativ weit weg von einem offiziellem Release, aber vielleicht hat ja jemand schon ein par Erfahrungen gesammelt.

Der Server liegt in Version 3.0.0-rc1-final vor. Der JavaScript Client funktioniert ohne Probleme.
Der C# Client allerdings nur bedingt. Es funktioniert die Anmeldung und der Server kann Methoden beim Client aufrufen, allerdings nicht umgekehrt.

Ich habe eine minimales Beispiel zusammengestellt:


 private static HubConnection _connection;
        private static IHubProxy _serviceGuard;

        static void Main(string[] args)
        {
            _connection = new HubConnection("http://localhost:5000/signalr");
            _serviceGuard = _connection.CreateHubProxy("Test");
            _serviceGuard.Subscribe("Test").Received += Program_Received;
            _connection.Start().ContinueWith((task) =>
            {
                _serviceGuard.Invoke("Test").Wait(); //Hier die Exception
            });

            Console.ReadKey();
        }


 [HubName("Test")]
    public class TestHub : Hub
    {
        public void Test()
        {
            Trace.WriteLine("Test aufgerufen");
        }

        public override Task OnConnected()
        {
            Trace.WriteLine("Login");
            Clients.Caller.Test();
            return base.OnConnected();
        }
    }

Ich bekomme folgende Exception:
Fehler
{"StatusCode: 500, ReasonPhrase: 'Internal Server Error', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:\r\n{\r\n Date: Tue, 10 May 2016 19:50:36 GMT\r\n Server: Kestrel\r\n Content-Length: 0\r\n}"}


Serverseitig wurden die "DetailedErrors" aktiviert:


services.AddSignalR(options =>
            {
                options.Hubs.EnableDetailedErrors = true;
            });

Mit dem Error ist leider nichts anzufangen. Hat zufällig jemand bereits den C# Client ans laufen bekommen?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Rioma am .
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 862
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

Hallo,

ich würde einmal den Fiddler dazwischen schalten, und schauen ob es einen Unterschied im Request zwischen dem Javascript client und dem .net client gibt.

Als zweites würde ich den Server im Debug starten und das Anhalten an allen Exceptions einschalten. So kommst Du vielleicht an die eigentliche Exception.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16152

beantworten | zitieren | melden

Wenn Du den 2.2.0 Client verwendest; der ist nicht Kompatibel mit SignalR 3.0
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Rioma
myCSharp.de - Member



Dabei seit:
Beiträge: 228

Themenstarter:

beantworten | zitieren | melden

Javascript verwendet Protocol-Version 1.5 und C# 1.4. Aber soweit ich gelesen hatte, war die Änderung nur für Browser relevant.

Hallo Abt. Danke für den Hinweis. Darf ich fragen wo du das gelesen hast? Ich habe leider nichts gefunden diesbezüglich. Gibt es eine alternative zum SignalR Client 2.2.X ? Auch hier finde ich nur die Version 3 vom Server.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16152

beantworten | zitieren | melden

Ich meine, dass es dazu ein Ticket in GitHub gibt und das auch beim Community Standup angesprochen wurde.

Du weißt es ja; SignalR 3 ist noch in einem sehr frühen Stadium.
Dementsprechend wirst Du da auch nicht sooo viel finden. Und nen C# Client für SignalR ist ja jetzt kein Prio 1 Thema.
Fokus von SignalR ist ja ganz klar das Web im Sinne von JavaScript.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Coffeebean
myCSharp.de - Team

Avatar #avatar-3295.gif


Dabei seit:
Beiträge: 2461
Herkunft: Deutschland/Schweiz

beantworten | zitieren | melden

Hallo Rioma,

ich hab auch mal eine Demo gemacht mit SignalR3 und AngularJs2. SignalR3 lief zwar, aber der IE war erschreckend langsam, etwas buggy hier und da. Ist aber schon nen Monat her. Ich hab mich ein wenig umgehört und das Resultat war, dass SignalR 3 einfach noch in einem sehr sehr frühen Stadium ist (wie Abt sagt). Es wundert mich nicht, dass ein C#-Client nicht einwandfrei läuft. Wenngleich eine "harte" Exception komisch ist. Ich würde, wie schon gesagt wurde, mal die Calls mit dem Fiddler anschauen. Ich weiss, dass das jetzt keine Lösung auf dein Problem ist. Aber vielleicht eine Erklärung. :)

Gruss

Coffeebean
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16152

beantworten | zitieren | melden

Die Exception ist die Standard Exception von Kestrel / der Pipeline.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Rioma
myCSharp.de - Member



Dabei seit:
Beiträge: 228

Themenstarter:

beantworten | zitieren | melden

Das letzte was ich gestern getestet hatte war mal die Protokolle durchzugehen. Ich kann mich daran erinnern, dass er zum Beispiel beim Longpolliing hier auf die Nase gefallen ist:

https://github.com/SignalR/SignalR/blob/dev/src/Microsoft.AspNet.SignalR.Client45/Http/DefaultHttpClient.cs Zeile 142.



return httpClient.SendAsync(requestMessage, HttpCompletionOption.ResponseHeadersRead, cts.Token)                
                .Then(responseMessage =>
                {
                    if (responseMessage.IsSuccessStatusCode)
                    {
                        responseDisposer.Set(responseMessage);
                    }
                    else
                    {
                      throw new HttpClientException(responseMessage); //Exception
                    }

                    return (IResponse)new HttpResponseMessageWrapper(responseMessage);
                });


Die Url c# <--> javascript sah vollkommen anders aus. Ich nehme mal an aufgrund der Protokoll-Version 1.4 -> 1.5.
Ich gehe jetzt mal nicht davon aus, dass die URL "kaputt" war.

Die eigentliche "Exception" wird dann wahrscheinlich beim Server fliegen
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Rioma am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16152

beantworten | zitieren | melden

Es ist eine Preview, bzw streng genommen noch davor. Du darfst weder erwarten, dass aktuell alles funktioniert oder es aktuell eine Abwärtskompatibilität gibt - noch darfst Du erwarten, dass der Code so bleibt.
Wenn Du rumspielen willst, dann verwende SignalR 3.0; vom Client wirst da aber noch Abstand nehmen müssen oder selbst einen schreiben.

Solls Zeitnah (~vor Q4) produktiv gehen, dann würde ich Dir deutlich von SignalR 3 aktuell abraten.
Dafür ist die aktuelle Version absolut nicht gedacht.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Rioma
myCSharp.de - Member



Dabei seit:
Beiträge: 228

Themenstarter:

beantworten | zitieren | melden

Danke. Es hätte ja auch sein können, dass es an mir liegt.

Dann wieder zurück zu SignalR 2.X
private Nachricht | Beiträge des Benutzers