J'essaie de trouver un moyen de gérer les exceptions non gérées au niveau du serveur. Je veux contrôler la gestion des exceptions au niveau du service de domaine afin que, lorsqu'une opération est appelée, je puisse enregistrer l'exception et l'inclure dans de beaux mots pour l'envoyer au client. J'ai trouvé plusieurs façons pour WCF et les services Web classiques, mais rien pour les services RIA. S'il vous plaît fournir vos suggestions.RIA Services Server Side Exception Handling
Répondre
Vous devez remplacer la méthode DomainService.OnError comme décrit dans cette entrée de blog WCF RIA Services Exception Handling. Je l'ai fait dans une classe DomainService de base plutôt que dans chaque classe DomainService individuelle dans mon application comme indiqué ci-dessous. La propriété errorInfo.Error n'a pas de setter donc je ne pense pas que vous pouvez remplacer l'objet d'exception par le vôtre, mais l'élément de configuration <system.web><customErrors mode="On" />
peut empêcher les détails de l'exception d'être exposés au client.
[EnableClientAccess()]
public class DomainServiceBase : DomainService
{
protected override void OnError(DomainServiceErrorInfo errorInfo)
{
Logger.WriteException(errorInfo.Error);
base.OnError(errorInfo);
}
}
Vous pouvez rechercher des erreurs spécifiques, puis lancer une exception DomainException, différente de l'exception DomainOperationException standard. Le DomainException a un ErrorCode, qui peut être utilisé sur le client pour spécifier une condition qui sera traitée différemment sur le client.
Voir la réponse de Kyle McClellan au http://forums.silverlight.net/forums/t/193028.aspx. Le blog de Kyle est également une très bonne ressource pour ce genre de questions.