1

J'utilise WCF RIA Services VS2008/.NET 3.5 et j'essaie de gérer les exceptions. J'ai surchargé la méthode OnError de DomainService et effectuant ma gestion des exceptions dans cette méthode. J'essaie de lancer des exceptions de règles métier ou des exceptions de base de données au client sous une forme quelconque afin que le client les reconnaisse et les gère différemment. Le problème est que client reçoit toujours DomainServiceException et le message d'erreur d'origine avec la première ligne indiquant le nom de l'opération a échoué. Donc, je ne peux pas identifier le type d'exception côté client. J'ai essayé d'ajouter une chaîne spéciale à certains types d'exceptions dans OnError comme ci-dessousWCF RIA Services Business Rule/Database Exception Handling

/// <summary> 
    /// Exception handling and logging on error 
    /// </summary> 
    /// <param name="errorInfo"></param> 
    protected override void OnError(DomainServiceErrorInfo errorInfo) 
    { 
     Exception exceptionToLog = null; 
     //if exception is business rule exception then log only if there's an inner exception 
     if (errorInfo.Error.GetType() == typeof(BusinessRuleException)) 
     { 
      if (errorInfo.Error.InnerException != null) 
      { 
       exceptionToLog = errorInfo.Error; 
      } 
      //send the business rule exception to client 
      base.OnError(new DomainServiceErrorInfo(new DomainException("BRE:" + errorInfo.Error.Message))); 
     } 
     else 
     { 
      exceptionToLog = errorInfo.Error; 
      //if its some other server error then send only generic message. 
      base.OnError(new DomainServiceErrorInfo(new DomainException(ValidationErrorResources.MSG_GenericServerError))); 
     } 

     if (exceptionToLog != null) 
     { 
      //log exception 
      EntLibHelper.LogError(exceptionToLog); 
     } 
    } 

Mais cette astuce ne semble pas fonctionner. Y at-il un moyen de joindre des informations supplémentaires, à l'exception que je lance du serveur au client. Veuillez nous suggérer.

Répondre

0

Dans la mise à jour RTM, vous pouvez définir la propriété Error sur DomainServiceErrorInfo que vous souhaitez renvoyer au client. À ce stade, vous pouvez le définir sur une instance d'une exception de domaine.

Vous pourriez obtenir un comportement similaire en lançant une nouvelle exception DomainException à partir de votre OnError, bien que ce serait une solution de contournement hacky (en supposant que cela fonctionne).

+0

Ceci est une déception cependant pour les utilisateurs qui ne peuvent pas mettre à niveau vers .Net 4.0 dans un proche avenir. –