【发布时间】:2020-12-25 17:20:49
【问题描述】:
我遇到了 ASP.NET Core Web API 的问题,如果没有匹配的控制器操作,我想在其中显示自定义错误消息模型。
因此,这将是一个 404 错误,但具有自定义正文。
我没有尝试过任何事情,因为我不确定这是否可能。
【问题讨论】:
标签: asp.net-core asp.net-core-webapi
我遇到了 ASP.NET Core Web API 的问题,如果没有匹配的控制器操作,我想在其中显示自定义错误消息模型。
因此,这将是一个 404 错误,但具有自定义正文。
我没有尝试过任何事情,因为我不确定这是否可能。
【问题讨论】:
标签: asp.net-core asp.net-core-webapi
您可以通过添加一个动作方法来添加一个包罗万象的路由,该方法的路由将始终匹配,如果没有其他匹配。
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.UseExceptionHandler(errorApp =>
{
errorApp.Run(async context =>
{
context.Response.StatusCode = 500;
});
});
使用这个中间件,您实际上可以捕获代码,然后进行相应的处理。取自page .链接中还有其他各种示例,一些更简单的示例可能更适合您
【讨论】: