2013-07-30 13 views
5

Bir .NET istemcisi olan bir SignalR uygulamasına sahibim. Sunucuda bir hata oluştuğunda, istemci tarafında bu işlem yapabilmem gerekir. Bununla birlikte, Signalr her zaman, "UnknownUserException'u bana vermek yerine" UnknownUserException atıldı ... "gibi bir iletiyle" InvalidOperationException "içine tüm istisnaları her zaman sarar.SignalR - Özel Durumlar İstemciye Yayımlama

Bundan nasıl emin olacağımı bilmiyorum?

(InvalidOperationException yerine aslında istisna atılır beri) şu anda çalışmıyor Bir örnek: senin sunucuda

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.");  
} 

cevap

3

ayrıntılı hataları etkinleştirebilirsiniz:

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

bulundurun Akıl, sunucuda atılan bu hataları yaparak, sunucu tarafındaki uygulamanızdaki bazı istenmeyen güvenlik açıklarını (yalnızca bir FYI) ortaya çıkarabilecek istemcilere iletilecektir.

+0

Kural dışı durum işlemine bağlanmanın ve yalnızca tanıdığım istisnaları güvenli bir şekilde yaymanın ve diğerlerini de sarmalamanın bir yolu var mı? – ronag

+0

Bir çeşit hub boru hattı modülü oluşturabilirsiniz: http://www.asp.net/signalr/overview/hubs-api/hubs-api-guide-server#hubpipeline ve daha sonra hub işlevlerini yürütmek için BuildIncoming gibi şeylere bağlayabilirsiniz. ve atılan istisnaları yakalayın ve bunlara propaganda edip etmeyeceğinize karar verin –

+0

Ekledim, "RouteTable.Routes.MapHubs (yeni HubConfiguration {EnableDetailedErrors = true, EnableCrossDomain = true});" Application_Start "içinde ve uygulama havuzumu geri dönüştürdüm. Hala, gerçek istisnalar yerine InvalidOperationException 'alınıyor. Yapmam gereken bir şey var mı? – ronag