如何判断现有Azure Functions项目采用进程内还是隔离进程模式?
判断Azure Functions .NET 6项目的运行模式(进程内/隔离进程)
可以通过以下几种方式快速判断项目采用的运行模式:
1. 检查项目文件(.csproj)
- 进程内模式:
- 项目引用
Microsoft.NET.Sdk.FunctionsNuGet包 - 无
<AspNetCoreHostingModel>节点,或节点值为InProcess - 目标框架为
<TargetFramework>net6.0</TargetFramework>,Azure Functions版本为<AzureFunctionsVersion>v4</AzureFunctionsVersion>
- 项目引用
- 隔离进程模式:
- 项目引用
Microsoft.Azure.Functions.Worker和Microsoft.Azure.Functions.Worker.SdkNuGet包 - 存在
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>节点
- 项目引用
2. 查看启动代码结构
- 进程内模式:
- 通常用
Startup类做服务配置,或在函数类中通过[Inject]注入依赖 - 没有独立的主机构建代码(如
HostBuilder相关逻辑)
- 通常用
- 隔离进程模式:
- 存在类似如下的主机启动代码:
var host = new HostBuilder() .ConfigureFunctionsWorkerDefaults() .Build(); host.Run(); - 函数类的参数多为
FunctionContext,而非进程内模式直接使用的HttpRequest等绑定类型
- 存在类似如下的主机启动代码:
3. 观察本地调试日志
- 隔离进程模式启动时,控制台日志会明确显示 "Worker process started and initialized" 这类与Functions Worker相关的信息
- 进程内模式则直接与Azure Functions运行时一同启动,日志以函数实例初始化的信息为主
内容的提问来源于stack exchange,提问作者Trey Mack
相关产品推荐
相关产品推荐

