You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Functions中Dependency Injection依赖注入失效问题求助

问题根源

你当前的代码混用了Azure Functions两种托管模型的依赖注入配置逻辑,导致服务注册失效:

  • 带有[assembly: FunctionsStartup]标记的Startup类是进程内托管模型的依赖注入注册方式
  • 包含ConfigureFunctionsWorkerDefaults()调用的Program类是隔离进程(Isolated Worker)托管模型的启动配置逻辑,两种配置方式不能同时生效。

解决方案

以下两种方案二选一即可:

方案1:保留隔离进程托管模型

删除整个Startup类和对应的程序集属性,将服务注册逻辑迁移到Program类中:

namespace ZanettiClod.SampleAzureFunctions
{
    public class Program
    {
        public static void Main()
        {
            var host = new HostBuilder()
                .ConfigureFunctionsWorkerDefaults()
                // 新增服务注册配置
                .ConfigureServices(services =>
                {
                    services.AddHttpClient();
                    services.AddSingleton<IProductService, ProductService>();
                    services.AddSingleton<IProductRepository<Product>, ProductRepository>();
                })
                .Build();
            host.Run();
        }
    }
}

修改完成后确认项目引用的是隔离进程模型对应的NuGet包:Microsoft.Azure.Functions.Worker、Microsoft.Azure.Functions.Worker.Extensions.Http等,不要引入进程内模型的Microsoft.Azure.Functions.Extensions包。

方案2:改用进程内托管模型

删除整个Program类,确认项目配置符合进程内模型要求:

  1. 项目.csproj文件中需包含如下配置:
<AzureFunctionsVersion>v4</AzureFunctionsVersion>
<OutputType>Library</OutputType>
  1. 确保安装了进程内模型DI依赖包Microsoft.Azure.Functions.Extensions,不要引入隔离进程相关的Worker系列包。

验证

修改完成后清理项目、重新生成,再启动本地调试即可正常解析注入的服务。

内容的提问来源于stack exchange,提问作者Andrea Zanetti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 22:54:01