azure-functions - Azure Functions V3 进程外 - App Insights DI
问题描述
我们正在用 dotnet 5 v3 进程外函数替换一些现有的 v1 函数,但存在 DI 问题。
考虑以下现有服务(存储库模式)也被 ASP Dotnet Core Web Api 使用并且我们需要在 V3 函数中使用:
public class MyRepository : IMyRepository
private TelemetryClient _telemetry;
private readonly IConfiguration _configuration;
public MyRepository(DbContext context, TelemetryClient telemetry, IConfiguration configuration)
{
_telemetry = telemetry;
_configuration = configuration;
}
V3函数中的program.cs如下:
var host = new HostBuilder()
.ConfigureFunctionsWorkerDefaults()
.ConfigureServices(services =>
{
services.AddLogging();
services.AddScoped<IMyRepository, MyRepository>();
})
.Build();
host.Run();
函数构造函数:
private readonly IConfiguration _configuration;
private readonly IMyRepository _myRepo;
private readonly TelemetryClient _telemetryClient;
public V3Func (IConfiguration configuration, IMyRepository myRepo, TelemetryConfiguration telemetryConfiguration)
{
this._configuration = configuration;
this._myRepo = myRepo;
this._telemetryClient = new TelemetryClient(telemetryConfiguration);
}
目前尚不清楚,我找不到任何详细说明如何将 TelemetryClient 传递给注册服务的文档...这是运行该函数时的错误。
异常:System.InvalidOperationException:尝试激活“*.MyRepository”时无法解析类型“Microsoft.ApplicationInsights.TelemetryClient”的服务。
有人设法做到这一点吗?
解决方案
请勿随意更改此设置,因为可能需要更改其他应用程序设置和更改您的功能代码。请参阅如何定位 Azure Functions 运行时版本。
将 Azure 功能从 V1 迁移到最新版本,请在此处查看。
您需要进行的更改与语言运行时的更改有关,例如 .NET Framework 4.8 和 .NET Core 之间的 C# API 更改。您还需要确保您的代码和库与您选择的语言运行时兼容。
最好的迁移结果,你应该function app
在新版本中创建一个新的,并将你现有的版本1.x
功能代码移植到新的应用程序中。
按照此博客更新 Azure 功能。
推荐阅读
- anaconda - Jupyter Notebook 语法高亮不工作
- kotlin - 我无法理解 Kotlin 中的 generateSequence 函数
- r - 使用“caret”包运行决策树模型时出错
- java - 如何访问 Omnikey 3121 智能卡读卡器
- firebase - Flutter 中的 Cloud Firestore getAll() 等效项
- kubernetes - 尝试从 Web 客户端 (grpc-web) 调用 GRPC 服务器(在 GKE 上)时出现“404 未找到”
- wordpress - 古腾堡自定义元块不将元保存到自定义帖子类型
- android - 如何在颤振(android)应用程序中使用 C++ 代码?
- bash - Bash函数不回显附加参数
- sql - 分层查询显示每个父级下的所有子级