首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure持久函数AppSettings

Azure持久函数AppSettings
EN

Stack Overflow用户
提问于 2019-11-08 18:43:06
回答 2查看 727关注 0票数 0

我正在尝试创建一个azure持久函数,但是在这个主题上很难找到一些正常的指南。我已经设置了DI,并尝试读取函数的设置,但它崩溃了

我已经在VS 2019中设置了一个Azure函数项目,并添加了一个持久的Orchestrator函数模板。我从类中删除了所有“静态”引用,在我在启动文件中添加配置构建器之前,一切似乎都工作得很好

谁能给我解释一下这应该是如何工作的,或者给我一些指导,在哪里可以找到持久函数的配置的一些解释?我应该在host.json和local.settings.json中拥有什么,以及当我将其发布到门户网站时,这些变化是如何发生的?

我的情况是这样的。启动文件如下所示

通过Microsoft.Extensions.Configuration使用Microsoft.Azure.Functions.Extensions.DependencyInjection;;

代码语言:javascript
复制
[assembly: FunctionsStartup(typeof(DurableFunctions.Startup))]
namespace DurableFunctions
{
    public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            var settings = new ConfigurationBuilder()
                .AddEnvironmentVariables()
                .Build();
        }
    }
}

host.json是这样的

代码语言:javascript
复制
{
  "version": "2.0"
}

The local.settings.json

代码语言:javascript
复制
{
    "IsEncrypted": false,
    "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet"
    }
}

当我启动调试器时,我得到的错误是

这是输出:

代码语言:javascript
复制
[11/8/2019 10:29:04 AM] A host error has occurred during startup operation '8b80bc94-2b98-408b-895f-c5697430acfd'.
[11/8/2019 10:29:04 AM] Microsoft.Azure.WebJobs.Extensions.DurableTask: Value cannot be null.
[11/8/2019 10:29:04 AM] Parameter name: hostConfiguration.
Value cannot be null.
Parameter name: provider
EN

回答 2

Stack Overflow用户

发布于 2020-11-20 02:33:58

相反,您希望覆盖FunctionStartup类(https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-dependency-injection#customizing-configuration-sources)中的ConfigureAppConfiguration方法。

下面的示例将文档中提供的示例进一步添加用户机密。

代码语言:javascript
复制
public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
{
    FunctionsHostBuilderContext context = builder.GetContext();

    builder.ConfigurationBuilder
        .SetBasePath(context.ApplicationRootPath)
        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: false)
        .AddJsonFile($"appsettings.{context.EnvironmentName}.json", optional: true, reloadOnChange: false)
        .AddUserSecrets(Assembly.GetExecutingAssembly(), true, true)
        .AddEnvironmentVariables();
}

默认情况下,appsettings.json等配置文件不会自动复制到Azure函数输出文件夹。有关对.csproj文件的修改,请务必查看文档(https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-dependency-injection#customizing-configuration-sources)。还要注意,由于该方法附加现有提供程序的方式,必须始终以.AddEnvironmentVariables().结尾

关于Azure函数中配置的更深层次的讨论可以在Using ConfigurationBuilder in FunctionsStartup找到

票数 0
EN

Stack Overflow用户

发布于 2021-12-07 13:56:16

代码语言:javascript
复制
Did you get a response to this?
Did you try adding the local settings from the json, before the Environment Variables?
代码语言:javascript
复制
var config = new ConfigurationBuilder()
    .SetBasePath(context.FunctionAppDirectory)
    // This gives you access to your application settings in your local development environment
    .AddJsonFile("local.settings.json", optional: true, reloadOnChange: false)
    .AddJsonFile("secret.settings.json", optional: true, reloadOnChange: false)
    // This is what actually gets you the application settings in Azure
    .AddEnvironmentVariables()
    .Build();

我在部署时遇到了问题,我已经设置了一个变量组,但它们没有被选取。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58765020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档