2013-07-30 6 views
5

Ich habe eine SignalR-Anwendung mit einem .NET-Client. Wenn ein Fehler auf dem Server auftritt, muss ich dies auf der Client-Seite handhaben können. Dies ist jedoch ein wenig schwierig, da Signalr immer alle Ausnahmen in eine "InvalidOperationException" mit einer Nachricht wie "UnknownUserException is throwed ..." umwandelt, anstatt mir tatsächlich die UnknownUserException zu geben.SignalR - Ausnahmen Propagierung zum Client

Ich bin mir nicht sicher, wie ich das anstellen soll?

Ein Beispiel, das jetzt nicht funktioniert (weil InvalidOperationException anstelle der actualy Ausnahme ausgelöst wird):

try 
{ 
    await this.hubProxy.Invoke<Guid>("Authenticate", nww object[] { userName, languageCode, credentials }); 
} 
catch(UnknownUserException ex) 
{ 
    Toast.Dislay("Invalid UserName."); 
} 
catch(ConnectionError ex) 
{ 
    Toast.Dislay("Connection Error.");  
} 

Antwort

3

Auf dem Server, den Sie detaillierte Fehler aktivieren:

Routes.RouteTable.MapHubs(new HubConfiguration 
{ 
    EnableDetailedErrors = true 
}); 

Haltungsart Denken Sie daran, dass Fehler, die auf den Server geworfen werden, an Clients weitergegeben werden, die möglicherweise einige unbeabsichtigte Schwachstellen in Ihrer serverseitigen Implementierung aufdecken (nur eine FYI).

+0

Gibt es einen Weg, wie ich mich in die Ausnahmebehandlung einklinken kann und nur Ausnahmen verbreiten kann, die ich sicher kenne, und alle anderen umschließen? – ronag

+0

Art von, können Sie ein Hub-Pipeline-Modul erstellen: http://www.asp.net/signalr/overview/hubs-api/hubs-api-guide-server#hubpipeline und dann in Dinge wie BuildIncoming binden, um Hub-Funktionen auszuführen und fange Ausnahmen ab, die geworfen werden, und entscheide, ob sie propagiert werden sollen –

+0

Ich habe 'RouteTable.Routes.MapHubs (neue HubConfiguration {EnableDetailedErrors = true, EnableCrossDomain = true}); 'in' Application_Start' hinzugefügt und meinen App-Pool wiederverwendet. Es wird immer noch "InvalidOperationException" anstelle der tatsächlichen Ausnahmen angezeigt. Alles, was ich vermisst hätte? – ronag

Verwandte Themen