【问题标题】:Problems with Azure Functions v3 app importing a .NET Core 3.1 projectAzure Functions v3 应用程序导入 .NET Core 3.1 项目时出现问题
【发布时间】:2021-06-20 14:26:41
【问题描述】:

我在本地构建了一个 .NET Core 3.1 Azure Functions 应用程序,并尝试将 .NET Core 3.1 类库导入到 Functions 项目中,但是当我这样做时,我在运行应用程序时收到以下错误:

Microsoft.Azure.Functions.Extensions: Method not found: 'Microsoft.Extensions.Configuration.IConfigurationBuilder Microsoft.Azure.WebJobs.Hosting.IWebJobsConfigurationBuilder.get_ConfigurationBuilder()'. Value cannot be null. (Parameter 'provider')

我在我的 Functions 项目中使用 ConfigurationBuilder:

var config = new ConfigurationBuilder()
    .SetBasePath(context.FunctionAppDirectory)
    .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
    .AddEnvironmentVariables()
    .Build();

然后我也在我的库中的服务中使用配置:

public MyService(IConfiguration configuration)
{
    _configuration = configuration;
}

在我的 Functions 项目中,我添加了对 Microsoft.Extensions.Configuration 的引用,因为错误表明它找不到 ConfigurationBuilder 定义。

我可以导入 .NET Standard 2.0 项目而不会出现任何错误。我读到 Azure Funciton V3 与 .NET Core 3.1 类库兼容。我曾尝试降级 Microsoft.Azure.Functions.Extensions 并尝试使用软件包版本,但没有任何效果。

我在我的 Functions 项目中所做的配置是否与 .NET Core 库不兼容?为什么会出现此错误。

【问题讨论】:

    标签: .net-core azure-functions asp.net-core-3.1


    【解决方案1】:

    如果您没有特殊需求,不建议您使用自定义文件来存储设置。在 azure function v2&v3 中,local.settings.json 的 Values 部分中的设置将被读取为环境变量(所以我认为不需要使用自定义文件来存储设置)。只需使用Environment.GetEnvironmentVariables() 就能得到值。一般我们只使用local.settings.json进行本地开发,在azure portal我们使用配置设置:

    您可以在部署过程中通过 Visual Studio 快速添加:

    【讨论】:

    • 所以我完全删除了环境变量的检索和 ConfigurationBuilder 的使用,但我仍然得到错误。我还尝试删除有问题的库,创建一个空白的 .NET Core 3.1 类库,并作为依赖项导入,然后出现错误。我查看了this 并尝试更改版本,但没有成功。
    • 我发现了部分问题。我正在为我的启动类而不是 WebJobStartup 扩展 FunctionsStartup。当我切换到 WebStartup 时,我的项目已导入。然而,又出现了一个问题。我无法读取我的 http 触发器的请求标头。我创建了一个新问题here。如果您有任何建议,请告诉我。
    猜你喜欢
    • 2021-08-10
    • 2021-01-18
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多