我已将一些 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/