【问题标题】:Asp.net core web api custom error response for unmatched controller action?Asp.net core web api自定义错误响应对不匹配的控制器操作?
【发布时间】:2020-12-25 17:20:49
【问题描述】:

我遇到了 ASP.NET Core Web API 的问题,如果没有匹配的控制器操作,我想在其中显示自定义错误消息模型。

因此,这将是一个 404 错误,但具有自定义正文。

我没有尝试过任何事情,因为我不确定这是否可能。

【问题讨论】:

    标签: asp.net-core asp.net-core-webapi


    【解决方案1】:

    您可以通过添加一个动作方法来添加一个包罗万象的路由,该方法的路由将始终匹配,如果没有其他匹配。

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    
        routes.MapRoute(
            name: "CatchAll",
            template: "{*url}",
            defaults: new { controller = "CatchAll", action = "Index" });
    });
    

    对于 Web API:

    public class CatchAllController : Controller
    {
        [HttpGet("{*url}", Order = int.MaxValue)]
        public IActionResult Index()
        {
            return NotFound(YourModel)
        }
    }
    

    对于 MVC:

    public class CatchAllController : Controller
    {
        public IActionResult Index()
        {
            Response.StatusCode = StatusCodes.Status404NotFound;
            return View();
        }
    }
    

    【讨论】:

      【解决方案2】:
         app.UseExceptionHandler(errorApp =>
         {
            errorApp.Run(async context =>
            {
              context.Response.StatusCode = 500;
            });
         });
      

      使用这个中间件,您实际上可以捕获代码,然后进行相应的处理。取自page .链接中还有其他各种示例,一些更简单的示例可能更适合您

      【讨论】:

        猜你喜欢
        • 2018-08-13
        • 1970-01-01
        • 1970-01-01
        • 2017-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-25
        • 1970-01-01
        相关资源
        最近更新 更多