Отключить конечную точку API контроллера для производства - PullRequest
0 голосов
/ 04 марта 2019

Каков рекомендуемый способ разрешить отображение успокоительного API конечной точки или даже контроллера в среде разработки, но при публикации в других средах он недоступен?

1 Ответ

0 голосов
/ 04 марта 2019

Нет встроенного способа сделать это.Вам нужно будет сделать что-то вроде ввода IHostingEnvironment в свой контроллер, а затем выполнить в вашем действии следующую проверку:

if (!env.IsDevelopment())
{
    return NotFound();
}

Это тогда даст вид , чтоНа самом деле маршрут не существует вне среды разработки.Если вы собираетесь делать это достаточно, вероятно, было бы лучше создать собственный фильтр ресурсов, который вы могли бы применить:

public class DevelopmentOnlyAttribute : Attribute, IResourceFilter
{
    public void OnResourceExecuting(ResourceExecutingContext context)
    {
        var env = context.HttpContext.RequestServices.GetService<IHostingEnvironment>();
        if (!env.IsDevelopment())
        {
            context.Result = new NotFoundResult();
        }
    }

    public void OnResourceExecuted(ResourceExecutedContext context)
    {
    }
}

, который вы могли бы затем применить к соответствующим действиям, таким как:

[DevelopmentOnly]
public IActionResult Foo()
...