error-handling - Controller 中的错误处理

标签 error-handling exception-handling asp.net-core-2.0

我有这两个 Controller Action

#1将抛出除以零的异常

public IActionResult About()
{
     ViewData["Message"] = "Your application description page.";
     var x = 0;
     var y = 5 / x;
     return View();
}

#2异常(exception)之后,我希望在生产模式下调用此操作。
public IActionResult Error()
{
    var model = new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier };
    return View(model);
}

我有两个问题
  • 当我处于VS Debug模式时,将使用app.UseDeveloperExceptionPage(),因此不会调用Error Controller (这对于开发环境非常有用)。
  • 当我处于VS生产模式时,视觉上使用app.UseDeveloperExceptionPage(),但我不知道如何确认真正使用的环境(startup.cs中的断点在生产模式下不起作用。)
  • 如果以某种方式调用了错误操作,如何获取完整的异常消息(出于日志目的)?默认情况下,仅RequestId存储在模型中。

  • 我不想在每个 Action 或重复 Action 过滤器属性中使用try catch语法,因为我想像在核心版本之前的global.asax中那样实现一般的异常处理程序。

    我的startup.cs非常简单。
    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
    
        if (env.IsDevelopment())
        {
            app.UseBrowserLink();
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
        }
    
        app.UseStaticFiles();
        app.UseStatusCodePages();
    
        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
    }
    

    任何想法 ?

    最佳答案

    我们可以使用下面的代码行

     var feature = HttpContext.Features.Get<IExceptionHandlerFeature>();
               var error = feature?.Error;
                _logger.LogError("Oops!", error);
                return View("~/Views/Shared/Error.cshtml", error);
    

    您能否引用以下链接以获取更多详细信息
    Click

    关于error-handling - Controller 中的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51131470/

    相关文章:

    c# - .net 核心身份,获取特定的注册错误条件

    c# - LINQ 查询返回错误 "The expected type was ' System.Int3 2' but the actual value was null."

    asp.net-core - .Net core 2.0 HTTP 错误 502.5 - 进程失败

    swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

    go - 为什么我不能对类型 validator.FieldError 使用 Error()

    error-handling - VisualForce错误: Id value is not valid for the Contact standard controller

    iphone - 如何正确处理 iPhone 上的错误

    java - 使用另一个Java文件运行Java文件时出错

    java - 当第一个策略和恢复策略都失败时 Java 中的异常组合

    ruby-on-rails - 如果我使用 begin...rescue,rails 会回滚吗?