Question

J'utilise ServiceStack avec d'excellents résultats jusqu'à présent, sauf que la gestion d'erreurs est apparemment délicate. Si quelque chose se passe mal pendant la sérialisation d'un message (parce que j'oublié d'ajouter un constructeur par défaut au message par exemple) tout le client obtient en arrière est un message que le serveur avait une erreur interne et un code d'état de 500. Ajout d'un écouteur à l'événement HttpApplication.Error dans le Global.asax ne fonctionne pas comme il ne fait jamais frappé. Ni ne Application_Error. Non seulement cela est insuffisant pour les scénarios de l'utilisateur final, il rend le débogage de ces erreurs très lourdes que la seule façon de savoir ce qui a mal tourné cette expression est laide dans le Espion:

Encoding.Default.GetString( ((System.IO.MemoryStream)((SyncMemoryStream)((System.Net.HttpWebResponse)(((WebException)ex).Response)).ResponseStream))._buffer)

Ce que je voudrais est attraper tout et toutes les erreurs du côté du serveur (que ce soit par sérialisation ServiceStack ou des erreurs sur mes services) et ajouter les informations nécessaires à une collection Errors que tous mes types de messages ont.

Était-ce utile?

La solution

Voir validation ServiceStack et traitement des erreurs page wiki pour plus de détails sur la manipulation et la validation erreur dans ServiceStack.

À l'heure actuelle il n'y a aucun moyen de gérer une exception sérialisation avec une logique personnalisée (bien que je vais maintenant ajouter que sur la liste TODO:).

Si votre réponse DTO a une ResponseStatus propriété (à savoir ou hérite de IHasResponseStatus), ServiceStack devrait automatiquement sérialiser votre exception.

Pour l'obtenir aussi sérialiser votre jeu StackTrace DebugMode true avec SetConfig () dans votre AppHost.Configure () Script onload.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top