Asp. net ядро ​​web api, пользовательская реакция на ошибку для непревзойденного действия контроллера? - PullRequest
0 голосов
/ 20 января 2020

У меня проблема с ASP. NET Core Web API, где я хочу отобразить пользовательскую модель сообщения об ошибке, если не было выполнено ни одно из действий контроллера.

Итак, это будет Ошибка 404, но с настроенным телом.

Я ничего не пробовал, потому что не уверен, возможно ли это вообще.

Ответы [ 2 ]

1 голос
/ 20 января 2020

Вы можете добавить универсальный маршрут, добавив метод действия с маршрутом, который всегда будет совпадать, если нет других.

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

Для 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();
    }
}
0 голосов
/ 20 января 2020
   app.UseExceptionHandler(errorApp =>
   {
      errorApp.Run(async context =>
      {
        context.Response.StatusCode = 500;
      });
   });

Используя это промежуточное ПО, вы можете фактически перехватить код и затем обработать его соответствующим образом. Это взято из этой страницы . В ссылке есть и другие примеры, некоторые из них могут подойти вам лучше

...