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.
Ceci est une déception cependant pour les utilisateurs qui ne peuvent pas mettre à niveau vers .Net 4.0 dans un proche avenir. –