Asp.net core 针对不匹配控制器操作的Asp.net核心web api自定义错误响应?
我对ASP.NET Core Web API有一个问题,如果未匹配任何控制器操作,我希望显示一个自定义错误消息模型 所以,这将是一个404错误,但是有一个定制的主体 我没有尝试过任何东西,因为我不确定这是否可能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; }
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();
}
}