Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 针对不匹配控制器操作的Asp.net核心web api自定义错误响应?_Asp.net Core_Asp.net Core Webapi - Fatal编程技术网

Asp.net core 针对不匹配控制器操作的Asp.net核心web api自定义错误响应?

Asp.net core 针对不匹配控制器操作的Asp.net核心web api自定义错误响应?,asp.net-core,asp.net-core-webapi,Asp.net Core,Asp.net Core Webapi,我对ASP.NET Core Web API有一个问题,如果未匹配任何控制器操作,我希望显示一个自定义错误消息模型 所以,这将是一个404错误,但是有一个定制的主体 我没有尝试过任何东西,因为我不确定这是否可能 app.UseExceptionHandler(errorApp => { errorApp.Run(async context => { context.Response.StatusCode = 500; }

我对ASP.NET Core Web API有一个问题,如果未匹配任何控制器操作,我希望显示一个自定义错误消息模型

所以,这将是一个404错误,但是有一个定制的主体

我没有尝试过任何东西,因为我不确定这是否可能

   app.UseExceptionHandler(errorApp =>
   {
      errorApp.Run(async context =>
      {
        context.Response.StatusCode = 500;
      });
   });
使用这个中间件,您实际上可以捕获代码,然后相应地处理它。它是从这个 . 链接中还有许多其他示例,一些简单的示例可能更适合您

使用这个中间件,您实际上可以捕获代码,然后相应地处理它。它是从这个
. 链接中还有许多其他示例,一些更简单的示例可能更适合您

您可以通过添加一个操作方法,添加一个包含始终匹配的路由(如果没有其他路由匹配的话)

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();
    }
}

您可以通过添加一个操作方法来添加一个“全包”路由,该方法的路由在没有其他路由匹配的情况下始终匹配

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();
    }
}