在调试模式下运行时,ASP.Net Core不会引发异常

Hus*_*man 5 asp.net-mvc dependency-injection exception visual-studio-debugging asp.net-core

我正在使用Visual Studio 2015 Update 3和ASP.NET Core。API(帐户)之一取决于使用Redis的缓存服务。

public AccountController(Cache.Contracts.ICacheManager cacheManager)
{
     _cacheManager = cacheManager;
}
Run Code Online (Sandbox Code Playgroud)

当Redis未运行时,由于Cache Service应该连接到Redis,因此api /帐户将不起作用。

在启动类中:

 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
 {      
     loggerFactory.AddConsole();
     loggerFactory.AddDebug();
 }
Run Code Online (Sandbox Code Playgroud)

要求api /帐户时

从Visual Studio运行项目

它给出以下内容:

The localhost page isn’t working

localhost is currently unable to handle this request.
Run Code Online (Sandbox Code Playgroud)

使用dotnet run以下命令从powershell运行时

在此处输入图片说明

这也是例外设置

在此处输入图片说明

为什么在Visual Studio情况下不会引发错误?我需要知道导致我的应用程序中断的错误。

Mic*_*haC 0

在请求管道期间抛出错误。所以,你可能无法直接看到它。

添加开发人员异常页面app.UseDeveloperExceptionPage()以查看详细信息而不是通用消息和/或添加自定义中间件以捕获每个请求上发生的所有异常。在这种情况下,您可以设置断点并检查异常或记录它:

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

    }
});
Run Code Online (Sandbox Code Playgroud)

重要的是,在任何其他中间件或 .UseMvc 等之前添加此中间件......

  • 当用户代码中引发异常时,是否有任何方法可以让 Visual Studio 立即中断,而无需将“调试器异常设置”窗口设置为“在所有引发的异常上中断”? (2认同)
  • 在正常的 .NET 中,我们得到这样的结果:无论用户代码中发生什么未处理的异常,它都会停止调试器。它可以在 MVC、WEbForms、WinForms 等任何形式中工作。 (2认同)