当前位置: 首页 > 知识库问答 >
问题:

Azure Functions V3 Out-of-Process - App Insights DI

邢寒
2023-03-14

我们正在用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函数中的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);
}

不清楚,我找不到任何详细说明如何将遥测客户端传递到注册服务的文档…这是运行函数时的错误。

例外:系统。InvalidOperationException:无法解析类型“Microsoft.ApplicationInsights”的服务。尝试激活'*.MyRepository'时,遥测客户端'。

有人设法做到这一点吗?

共有1个答案

巢星纬
2023-03-14

不要任意更改此设置,因为可能需要更改其他应用程序设置以及对函数代码的更改。请参阅如何以Azure Functions运行时版本为目标。

将Azure功能从V1迁移到最新版本请在此处检查。

您需要进行的更改与语言运行时中的更改有关,例如C# API在。NET Framework 4.8和。网芯。您还需要确保您的代码和库与您选择的语言运行时兼容。

为了获得最佳迁移结果,您应该在新版本中创建一个新的函数应用程序,并将现有版本的1.x函数代码移植到新应用程序。

关注此博客,更新Azure功能。

请查看github问题和SO线程以获取更多信息。

 类似资料:
  • 对进程执行下列的其中一个操作:检查进程是否存在;改变进程的优先级;关闭进程;等待进程关闭。 Process, Cmd, PID-or-Name [, Param3] 参数 Cmd 下列单词的其中一个: Exist: 如果存在一个匹配的进程则设置 ErrorLevel 为此进程 ID (PID), 否则为 0. 如果 PID-or-Name 参数为空, 则获取脚本自身的 PID. 获取脚本的 PID

  • Swoole提供的进程管理模块,用来替代PHP的pcntl !> 此模块比较底层,是操作系统进程管理的封装,使用者最好有linux多进程编程经验。 PHP自带的pcntl,存在很多不足,如: 没有提供进程间通信的功能 不支持重定向标准输入和输出 只提供了fork这样原始的接口,容易使用错误 Process提供了比pcntl更强大的功能,更易用的API,使PHP在多进程编程方面更加轻松。 Proce

  • 进程对象是一个全局对象,可以从任何地方访问。 进程对象中有几种可用的方法。 流程事件 进程对象是EventEmitter的一个实例,并发出以下事件 - Sr.No. 活动和描述 1 exit 当流程即将退出时发出。 此时无法阻止退出事件循环,并且一旦所有退出侦听器都已完成运行,该进程将退出。 2 beforeExit 当节点清空其事件循环并且没有其他任何计划时,将发出此事件。 通常,节点在没有调度

  • 处理对象的扩展 进程: Main, Renderer Electron's process 对象继承 Node.js process object。 它新增了以下事件、属性和方法 Sandbox 在沙盒化的渲染进程中, process 对象只包含了API的一个子集: crash() hang() getCreationTime() getHeapStatistics() getBlinkMemor

  • 主要内容:1 Java.lang Process介绍,2 Java.lang Process声明,3 Java.lang Process方法1 Java.lang Process介绍 java.lang.process是一个抽象类,它提供对各种本机进程的控制。该过程通常由ProcessBuilder.start() 和Runtime.exec启动。 Process类提供了用于执行不同活动的各种方法,例如执行输入,执行输出,等待流程执行,检查流程的当前状态或简单地销毁流程。 2 Java.lang

  • 进程池,基于Swoole\Server的Manager管理进程模块实现。可管理多个工作进程。该模块的核心功能为进程管理,相比Process实现多进程,Process\Pool更加简单,封装层次更高,开发者无需编写过多代码即可实现进程管理功能, 配合Co\Server可以创建纯协程风格的,能利用多核CPU的服务端程序。 常量 常量 说明 SWOOLE_IPC_MSGQUEUE 系统消息队列通信 SW