0
votes

Détails de l'exception dans le cadre ABP

Je veux retourner les détails de l'exception avec ABP .NET Core, ce que j'ai remarqué, c'est que lorsque je vais à la table AbpAuditLogs et App_Data \ Logs logFile, ils contiennent l'exception dans les détails, mais lorsque j'utilise la méthode ci-dessous pour renvoyer l'exception, cela ne montre qu'une exception générale sans tous les détails (erreur de serveur interne 500)

try{
:
:
:
}
catch (Exception ex)
{
                throw new System.ArgumentException(ex.InnerException.Message.ToString(), "original");
}

Alors, comment puis-je renvoyer l'exception spécifique pour l'utilisateur pour l'exemple d'exception de validation d'e-mail et ainsi de suite?

Mise à jour:

J'expliquerai plus pour rendre la question plus claire:

La façon dont j'ai géré l'exception est jointe à cette question ci-dessus. Le problème est que lorsque vous frappez une demande sur le service de swagger ou Postman, voyez toujours Erreur générale avec le code d'état 500 sans aucun détail et cela me force à examiner les détails de l'exception dans le fichier journal ou la table journal, je veux voir les détails du exception (par exemple FileNotFoundException ) directement depuis Swagger ou Postman sans retour au fichier journal ou à la table AbpAuditLogs.


1 commentaires

Est-ce que cela répond à votre question? Comment obtenir une exception plus détaillée dans ABP?


3 Réponses :


2
votes

Je pense que l'exception conviviale fonctionnera pour vous.

Parce que si une exception implémente l'interface IUserFriendlyException, ABP ne modifie pas ses propriétés Message et Détails et ne l'envoie pas directement au client.

throw new UserFriendlyException(
"Username should be unique!"
);

Vous pouvez trouver plus d'informations ici .


5 commentaires

mais cela signifie que si je devais écrire chaque exception manuellement, je ne pouvais pas l'obtenir à partir de l'objet d'exception retourné (par exemple, ex.InnerException.Message)


Je ne sais pas si j'ai bien compris votre question, mais cela fonctionne pour moi sur la base de mes propres expériences. J'ai fait comme dans l'exemple de bloc de code de votre question. Après avoir attrapé une exception, je lance une exception différente. Cette exception que je lance est UserFriendlyException. Si ex.InnerException.Message n'est pas nul, il devrait fonctionner comme prévu.


pour le modèle frontal ABP, il a renvoyé les détails mais dans swagger ou tout autre client HTTP, il n'affiche que Erreur: Erreur de serveur interne


J'ai testé ce que vous avez dit. J'ai vu le même message d'erreur sur les clients que j'ai testés. Si vous rencontrez toujours le même problème, pouvez-vous expliquer votre exemple plus en détail? Avant de commencer, vous pouvez consulter cette rubrique, cela peut résoudre votre problème.


merci j'ai mis à jour ma question et j'ai trouvé la réponse, en tout cas merci pour votre aide.



0
votes

En fait, j'ai trouvé la réponse dans cette question pour @Mehdi Daustany. Ce que j'ai fait est exactement ce que @Mehdi Daustany a répondu, j'ai ajouté le code ci-dessous:

   if (_env.EnvironmentName.ToLower() == "development")
    Configuration.Modules.AbpWebCommon().SendAllExceptionsToClients = true;

sous ***. Web.Core puis les détails de l'exception sont apparus dans le Swagger


0 commentaires

0
votes
services.Configure<AbpExceptionHandlingOptions>  (options =>
{
    options.SendExceptionsDetailsToClients = true;
});
Above code will configure abp to return all the exception details. Just add it to the configuration.

0 commentaires