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

时间:2016-11-16 16:50:33

标签: asp.net-mvc exception dependency-injection asp.net-core visual-studio-debugging

我正在使用Visual Studio 2015 Update 3和ASP.NET Core。其中一个API(Account)依赖于使用Redis的缓存服务。

public override int SaveChanges()
{

    var PartAssemblyList = ChangeTracker.Entries()
                            .Where( x => x.Entity is Order &&
                                         x.State == EntityState.Added);

    foreach (var entity in PartAssemblyList)
    {
        if (/*RowExists*/)
        {
            //Cancel Save (entity.State = EntityState.Unchanged)?
            //Update Quantity of Existing Row
            //Set existing row to save
        }
    }

    return base.SaveChanges();
}

当Redis没有运行时,api / account应该不起作用,因为Cache Service应该与Redis建立连接。

在启动课程中:

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

申请api / account

从Visual Studio运行项目

它提供以下内容:

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

使用The localhost page isn’t working localhost is currently unable to handle this request. 从powershell运行时:

enter image description here

这也是例外设置

enter image description here

问题

为什么Visual Studio案例中不会抛出错误?我需要知道导致我的应用程序崩溃的错误。

1 个答案:

答案 0 :(得分:1)

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

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

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

    }
});

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