首页 > 解决方案 > 在本地运行 Azure Functions 时使用存根

问题描述

我有一个 Azure Functions (.NET Core) 项目,我想根据环境为某些类选择一个实现。类似于以下内容:

public class Startup : FunctionsStartup
{
    public override void Configure(IFunctionsHostBuilder builder)
    {
        builder.Services.AddLogging();
        #if azure environment
        builder.Services.AddSingleton<IAzureApi, AzureApi>();
        #else
        builder.Services.AddSingleton<IAzureApi, AzureApiStub>();
        #endif
    }
}

最好的方法是什么?是否可以配置这种行为 local.settings.json?

标签: azuredependency-injectionazure-functions

解决方案


通过在配置文件中使用自定义属性来实现此目的的简单方法。

 [FunctionName("CustomSettings")]
public static Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "GET")]HttpRequestMessage req, TraceWriter log)
{
    var customSetting =  Environment.GetEnvironmentVariable("AzureEnvironment", EnvironmentVariableTarget.Process);
    if(customSetting == "Development")
    {
        //dosomething
    }
}

在 Azure 门户中手动添加此属性 (AppSettings)。
更多信息-> https://docs.microsoft.com/en-us/sandbox/functions-recipes/environment-variables?tabs=csharp
https://docs.microsoft.com/en-us/azure/azure-函数/函数-dotnet-class-library#environment-variables


推荐阅读