Nous essayons d'exclure certains contrôleurs de notre code de production (nous exposons certains points de terminaison pour la manipulation API requis par nos tests d'interface utilisateur intégrée)Hors un contrôleur de code de production
Jetez un oeil à l'extrait suivant, pouvez-vous voir quelque chose de fondamentalement faux en suivant cette approche?
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
public class NonProductionAttribute : ApiExplorerSettingsAttribute, IActionFilter
{
public NonProductionAttribute()
{
IgnoreApi = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == EnvironmentName.Production;
}
public void OnActionExecuted(ActionExecutedContext context) { }
public void OnActionExecuting(ActionExecutingContext context)
{
if (IgnoreApi)
{
context.Result = new NotFoundResult();
}
}
}
Donc, fondamentalement, nous décorons simplement le contrôleur « offensant » avec l'attribut non-production, je suis héritant de ApiExplorerSettingsAttribute à exclure le contrôleur de la documentation générée.
Une préoccupation pourrait être l'utilisation de la variable d'environnement, peut-être en quelque sorte obtenir de IHostingEnvironment?
Ou suggérez-vous une alternative complètement différente (pour exclure des contrôleurs qui est)?
Vous pouvez placer la variable d'environnement dans le fichier web.config, puis transformer la configuration pour chaque environnement. Je l'ai déjà fait pour un grand effet –
Je pense que la partie variable d'environnement est très bien, sauf que vous pouvez l'utiliser en utilisant [config] (https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration # using-options-and-configuration-objects), seul le négatif qui vient à l'esprit est que vous aurez toutes ces routes non prod dans votre table de routage. Il se sent aussi un peu risqué, il y a un risque si cela se fait mal les choses pourraient fuir à prod. Vous pourriez regarder un processus de temps de construction pour faire la même chose. – Matt
@Matt ma conception initiale impliqué le processus de construction seulement y compris ce qui est nécessaire – cstruter