Сейчас я использую, например, return Json(NotFound()); в каждом контроллере.Я ищу широкую конфигурацию приложения. Тело JSON должно содержать код состояния.
return Json(NotFound());
Для конфигурации всего приложения используйте фильтр: https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/filters?view=aspnetcore-2.1
ИМХО, вы должны вернуть значение null в методах вашего контроллера и создать ActionFilter, проверяющий нулевой результат и возвращающий {"statusCode":404}
{"statusCode":404}
Для регистрации фильтра используйте что-то вроде:
services.AddMvc(configure => { configure.Filters.Add<MyActionFilter>(); })