J'ai une application ASP.NET Core 6 MVC avec à la fois des contrôleurs basés sur des vues et des contrôleurs API. J'aimerais pouvoir désactiver certains contrôleurs via la configuration, et j'ai un middleware qui fonctionne :
public async Task InvokeAsync(HttpContext context, RequestDelegate next)
{
context.Request.RouteValues.TryGetValue("controller", out var controller);
if (controller != null)
{
if (!_allowControllers.IsMatch(controller as string))
context.Abort();
else if (_denyControllers.IsMatch(controller as string))
context.Abort();
}
await next(context);
}
Cependant, lorsque déclenché, le client obtient une connexion interrompue. Est-il possible de retourner un "404" à la place? J'ai essayé
context.Response.Redirect("/notfound");
au lieu de Abort
, mais cela ne semble pas fonctionner pour les contrôleurs API.