3

J'utilise Visual Studio 2015 Update 3 et ASP.NET Core. L'une des API (compte) dépend d'un service de cache qui utilise Redis. Lorsque Redis n'est pas en cours d'exécution, l'API/compte ne doit pas fonctionner car le service de cache doit établir une connexion à Redis.ASP.Net Core ne lève pas une exception lors de l'exécution en mode débogage

Dans la classe de démarrage:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{  
    loggerFactory.AddConsole(); 
    loggerFactory.AddDebug(); 
} 

Lorsque vous demandez l'api/compte

L'exécution du projet de Visual Studio

Il donne les éléments suivants:

The localhost page isn’t working 

localhost is currently unable to handle this request. 

Lors de l'exécution de Powershell par en utilisant dotnet run:

enter image description here

Ceci est également les paramètres d'exception

enter image description here

Question

Pourquoi les erreurs ne sont pas jetés dans le cas Visual Studio ? J'ai besoin de savoir quelles erreurs provoquent la rupture de mon application.

+0

L'une est que Si vous lancez simplement votre application en utilisant "Démarrer sans déboguer" dans votre VS, obtenez-vous une erreur compilée? Pour l'exception non gérée, nous l'activons souvent sous les paramètres Debug-> Windows-> Exception, mais si le code n'a pas été réellement appelé pendant le débogage ou s'il contient l'erreur compilée, il ne lançait pas les messages d'exception. –

+0

Il n'y a pas d'erreur de complication, j'ai également vérifié toutes les exceptions _Common Runtime Exceptions_ dans la fenêtre Exceptions – Coding

+0

Si vous visualisez les fenêtres de sortie, et sélectionnez la liste déroulante "debug", pourriez-vous obtenir l'exception? Je sais qu'il peut montrer l'exception dans la fenêtre de sortie sans lancer les exceptions lors du débogage sous TOOLS-> Options-> Débogage-> Fenêtre de sortie-> Messages d'exception après avoir activé/désactivé le débogage JIT ou autres. –

Répondre

1

L'erreur est levée pendant le pipeline de demandes. Donc, vous ne pourriez pas le voir directement. Ajoutez la page d'exception du développeur app.UseDeveloperExceptionPage() pour afficher les détails à la place d'un message générique et/ou ajoutez un intergiciel personnalisé pour intercepter toutes les exceptions qui se produisent sur chaque requête. Dans ce cas, vous pouvez définir un point d'arrêt et inspectez l'exception ou LOGGUE:

app.Use(async (ctx, next) => 
{ 
    try 
    { 
     await next.Invoke(); 
    } 
    catch (Exception ex) 
    { 

    } 
}); 

Important, ajoutez ce middleware au début, avant toute autre question ou middleware .UseMvc etc ...