2017-08-28 1 views
1

Je rencontre beaucoup de difficultés pour obtenir un message d'exception personnalisé à partir de ma solution Web Api. Il est un peu plus compliqué que ça:Comment remplacer le message d'exception dans l'API Web ASP.NET

enter image description here

Je veux remplacer la lecture seule propriété de l'exception avec mon propre:

public class CustomException : Exception 
{ 
    public CustomException(string message) 
     : base(message) 
    { 
    } 

    public CustomException(string message, Exception inner) 
     : base(message, inner) 
    { 
    } 
} 

Cependant, j'ai aussi un gestionnaire global d'exception:

public class GlobalExceptionLogger : ExceptionLogger 
{ 
    public override void Log(ExceptionLoggerContext context) 
    { 
     if (context.Exception.Message == "Password has already been used in the past...1") 
     { 
      throw new CustomException("some msg", context.Exception); 
     } 

     NLogger.LogError("Global Error Handler", context.Exception); 
    } 
} 

Quand je jette l'erreur que je le fais comme:

if (some condition)) throw new CustomException("some msg"); 

Et puis je l'attrape dans la méthode comme:

catch (CustomException ex) 
{ 
    throw ex; 
} 
catch (Exception ex) 
{ 
    NLogger.LogError(ex); 
    throw; 
} 

Comment puis-je mettre le message à être « certains msg »? Ce que j'essaie de faire, c'est que l'api retourne 1-2 messages d'erreur liés au cas d'utilisation avec le mode customErrors activé.

Répondre

0
throw new HttpResponseException(
    new HttpResponseMessage 
    { 
     StatusCode = code, 
     ReasonPhrase = phrase, 
     Content = new StringContent(body) 
    }); 
+2

Pouvez-vous ajouter une explication à votre code? – Alex

+0

Cela m'a amené là où j'ai besoin d'être avec ça, merci! – RandomUs1r