.NET Core 3.1 中的 Azure 函数 : dependency Injection error

标签 azure dependency-injection azure-functions asp.net-core-3.1

我已将一些 Azure Functions 从 .NET Core 2.2 迁移到 3.1,并为我的函数类实现了依赖项注入(inject),但收到此错误:

Executed 'GetDataAsync' (Failed, Id=1f90c913-4385-4ef9-9f40-09e413191ba9, Duration=222ms)
[2022-03-30T19:43:43.143Z] Microsoft.Azure.WebJobs.Script.WebHost:
Registered factory delegate returns service is not assignable to ambiently scoped container with {no name, Parent={no name}}.
[2022-03-30T19:43:43.268Z] An unhandled host error has occurred.
[2022-03-30T19:43:43.272Z] Microsoft.Azure.WebJobs.Script.WebHost: Registered factory delegate returns service is not assignable to ambiently scoped container with {no name, Parent={no name}}.

 <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AzureFunctionsVersion>v3</AzureFunctionsVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Common1" Version="1.0.33.3" />
    <PackageReference Include="Common2" Version="3.12.0.1" />
    <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="2.6.1" />
    <PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="3.1.23" />
    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.23" />
    <PackageReference Include="Microsoft.Extensions.Http" Version="3.1.23" />
    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.23" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="3.1.23" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.9" />
  </ItemGroup>

最佳答案

请检查以下步骤是否有帮助:

如下medium article ,在将依赖项注入(inject)添加到从 .NET 2.2 迁移的 Azure Functions 项目 v3 之一时,我解决了相同的错误:

我得到的错误:

Microsoft.Azure.WebJobs.Script.WebHost: Registered factory delegate returns service Microsoft.Extensions.Logging.LoggerFactory is not assignable to container. Value cannot be null. (Parameter 'provider')

Startup.cs 文件中,在 builder.Services.AddLogging 方法中注册 Serilog logger 和 Serilog Logger 使用自己的实例和所有配置创建。

// Startup.cs - Registering a third party logging provider
var logger = new LoggerConfiguration()
                .WriteTo.Console()
                .WriteTo.File("log.txt", rollingInterval: RollingInterval.Day)
                .CreateLogger();
builder.Services.AddLogging(lb => lb.AddSerilog(logger));

另外,请引用这个Microsoft Documentation帮助您了解 .NET Azure Functions 中依赖注入(inject)的使用。

关于.NET Core 3.1 中的 Azure 函数 : dependency Injection error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71684826/

相关文章:

python - 将 Azure Blob CSV 读取到 Python Pandas DF 中的问题

java - @Service、@Repository 类对静态字段的依赖注入(inject)有利于静态方法的使用吗?

c# - services.AddSingleton,永远不会调用服务的构造函数

c# - Azure 预编译函数的 URL 格式应该是什么?

azure - 如何使用 Azure Functions 将 Azure 资源的流式诊断日志从事件中心推送到 Log Analytics 工作区?

c# - 防止多个线程/实例选择和处理 Azure SQL 数据库中的相同行

azure - 在 Azure Batch Shipyard 上运行 Docker Compose

c# - .NET Core Scoped 通过 DI 在 Singleton 中调用

c# - 仅将更新的文件上传到 Blob 存储

azure - 如何在 U-SQL 连接中使用 OR 逻辑运算符?