Azure 函数中的 IHostEnvironment,EnvironmentName 始终为“开发”

问题描述

我有一个在 Azure 函数调用的服务,该服务通过 DI 访问 IHostEnvironment。非常标准,按预期工作:

public TestService(IHostEnvironment hostEnvironment,IHttpClientFactory httpClientFactory,ILogger<TestService> logger)
{
    this.hostEnvironment = hostEnvironment;
    this.httpClientFactory = httpClientFactory;
    this.logger = logger;
}

在部署函数时,IsDevelopment 方法总是返回 true,并且日志显示 this.hostEnvironment.EnvironmentName 总是 Development。我已经尝试为 DOTNET_CORE_ENVIRONMENT、ASPNET_CORE_ENVIRONMENT 和 AZURE_FUNCTIONS_ENVIRONMENT 添加设置。无论这些设置是什么,IsDevelopment 总是返回 true。

我需要设置什么环境变量才能使 IHostEnvironment 反映正确的环境?

/// <inheritdoc/>
public async Task<MemoryStream> GetAsync(Uri requestUri,CancellationToken cancellationToken)
{
    if (this.hostEnvironment.IsDevelopment())
    {
        return new MemoryStream(Encoding.Default.GetBytes("Test content"));
    }
    else
    {
        //etc....
    }
}

解决方法

在不知道使用了函数运行时或者您的函数是在进程内还是进程外运行的情况下,很难告诉您具体的解决方案。

同时你看看Functions app settings