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等之前...

相關問題