2009-08-28 8 views
1

Est-il possible d'avoir une exception DataServiceException le long d'une liste d'erreurs pour les consommateurs?Personnaliser l'exception de service de données ADO.NET

Plutôt que de simplement recevoir les informations standard Message, Stacktrace, je voudrais également avoir une liste d'erreurs lorsque diverses validations échouent sur un modèle.

J'ai essayé de définir l'exception interne de DataServiceException à FaultException.

[DataContract] 
public class MyTypeWithExtraInfo 
{ 
    [DataMember] 
    public List<MyErrorInfo> MyErrors { get; set; } 
} 

[DataContract] 
public class MyErrorInfo 
{ 
    [DataMember] 
    string PropertyId { get; set; } 

    [DataMember] 
    public string Error { get; set; } 
} 

ClientSide je reçois le DataServiceException mais le message de l'opération n'a que la raison FaultException et le type (ToString'ed) il n'a pas les DataMembers que je l'ai spécifié dans MyTypeWithExtraInfo.

Répondre

1

Pour une seule exception, vous pouvez intercepter l'exception réelle et rethrow:

throw new System.ServiceMode.FaultException("Custom Error Message"); 

Cependant, si vous avez besoin pour gérer plusieurs exceptions, pensez à utiliser la Task Parallel Library Extensions for .NET. Cela vous permettra de collecter toutes les exceptions levées et de les placer dans un seul objet AggregateException. Cette bibliothèque est prévue pour faire partie de la structure .NET 4.0.

+0

Je suis désolé j'aurais dû indiquer que j'essaie d'utiliser une FaultException typée où j'ai un autre objet qui contient des informations supplémentaires sur l'erreur. Cet objet est marqué comme DataContract et ses DataMembers ne sont pas sérialisés et envoyés au client. J'ai essayé ce que vous avez déclaré et du côté client, tout ce que je reçois est le message et le type FaultException, mais pas les informations supplémentaires que je voudrais passer. – Hooveh

+0

Quelles informations supplémentaires souhaitez-vous transmettre? –

+0

Je cherche à effectuer une validation sur un modèle entier pendant une sauvegarde. Je veux rassembler toutes les validations qui échouent (pas renvoyer une à la fois) et ensuite passer toutes les erreurs ensemble à la fois. En utilisant quelque chose comme un objet avec une liste d'un tas d'erreurs. – Hooveh

Questions connexes