代码之家  ›  专栏  ›  技术社区  ›  Bagzli

mvc核心api项目中404的处理

  •  0
  • Bagzli  · 技术社区  · 6 年前

    我在想我哪里做错了。我想捕获我的api中出现的404个错误。我已经安装了中间件,但是当我试图访问不存在的页面时,就不会发生异常。

    public async Task Invoke(HttpContext context)
    {
        try
        {
            await _requestDelegate.Invoke(context);
        }
        catch (Exception exception)
        {
            await HandleExceptionAsync(context, exception);
        }
    }
    
    
    //in startup
    app.UseMiddleware<ExceptionHandler>();
    

    我在创业公司注册,这是我做的第一件事,以确保它处理其余的事情。

    0 回复  |  直到 6 年前
        1
  •  1
  •   jamesSampica    6 年前

    听起来像你想要的 UseStatusCodePagesWithReExecute 捕捉404并修改响应、日志等。

    //Startup.cs
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        ...
        app.UseStatusCodePagesWithReExecute("/error/", "?statusCode={0}");
        ...
    }
    
    //SomeController.cs
    public IActionResult Error(int? statusCode = null)
    {
        if(statusCode == 404) return new ObjectResult(new { message = "404 - Not Found" });
        ...
    }