Ho un'applicazione SignalR con un client .NET. Quando si verifica un errore sul server, devo essere in grado di gestirlo sul lato client. Tuttavia, questo è un po 'difficile in quanto Signalr avvolge sempre tutte le eccezioni in una "InvalidOperationException" con un messaggio come "UnknownUserException è stato lanciato ...", invece di darmi effettivamente il UnknownUserException
.SignalR - Propagazione delle eccezioni al client
Non sono sicuro di come procedere?
Un esempio che non funziona in questo momento (dal InvalidOperationException
è gettato anziché l'eccezione actualy):
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.");
}
C'è un modo per aggirare la gestione delle eccezioni e solo propagare eccezioni che conosco in modo sicuro e avvolgere tutte le altre? – ronag
Tipo di, è possibile creare un modulo pipeline hub: http://www.asp.net/signalr/overview/hubs-api/hubs-api-guide-server#hubpipeline e quindi collegarsi a cose come BuildIncoming per eseguire le funzioni hub e prendere le eccezioni che vengono lanciate e decidere se propogarle –
Ho aggiunto, 'RouteTable.Routes.MapHubs (nuovo HubConfiguration {EnableDetailedErrors = true, EnableCrossDomain = true});' in 'Application_Start' e riciclato il mio pool di app. Ancora ottenendo 'InvalidOperationException' invece delle effettive eccezioni. Qualcosa che mi sarei perso da fare? – ronag