3

我正在使用Visual Studio 2015 Update 3和ASP.NET Core。其中一个API(Account)取决于使用Redis的缓存服务。当在调试模式下运行时,ASP.Net Core不会引发异常

public AccountController(Cache.Contracts.ICacheManager cacheManager) 
{ 
    _cacheManager = cacheManager; 
} 

当Redis未运行时,由于缓存服务应与Redis建立连接,所以api /帐户不应起作用。

在启动类:

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

当请求的API /占到

从Visual Studio运行项目

它提供了以下:

The localhost page isn’t working 

localhost is currently unable to handle this request. 

当从PowerShell中通过使用dotnet run运行:

enter image description here

这也是例外设置的

enter image description here

问题

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

+0

一个问题是,如果你只是在你的VS中使用“无需调试就开始”运行你的应用程序,你会得到任何编译错误吗?对于未处理的异常,我们经常在Debug-> Windows-> Exception settings下启用它,但是如果代码在调试过程中没有真正调用,或者它有编译错误,它不会抛出异常消息。 –

+0

没有复杂的错误,我也检查了所有_Common Language Runtime Exceptions_的例外窗口 – Coding

+0

如果你查看输出窗口,并选择“调试”下拉列表,你能得到异常吗?我知道在启用/禁用JIT调试或其他功能之后,它可以在TOOLS-> Options-> Debugging-> Output window-> Exception messages下的调试期间在输出窗口中显示Exception,而不会出现Exceptions throw。 –

回答

1

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

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

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

    } 
}); 

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

相关问题