.netcore Azure 函数启动类未调用

San*_*r_4 3 azure .net-core azure-functions

我的 Azure 函数不会在本地调用启动类。运行项目时,我的断点没有命中 DependencyRegistrations.Register 函数。

包 Microsoft.Azure.Functions.Extensions 已正确安装

using Microsoft.Azure.Functions.Extensions.DependencyInjection;

[assembly: FunctionsStartup(typeof(MyNamespace.Startup))]

namespace MyNamespace
{
    public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            DependencyRegistrations.Register(builder.Services);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

为什么启动类没有被调用?

Thi*_*dio 8

我在您的代码片段中没有看到两件事。

1- [程序集:FunctionsStartup(typeof(MyNamespace.Startup))]

2-您确定 nuget 软件包已正确安装吗?(Microsoft.Azure.Functions.Extensions)

最终的启动代码应如下所示:

using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;

[assembly: FunctionsStartup(typeof(MyNamespace.Startup))]

namespace MyNamespace
{
    public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            builder.Services.AddHttpClient();

            builder.Services.AddSingleton<IMyService>((s) => {
                return new MyService();
            });

            builder.Services.AddSingleton<ILoggerProvider, MyLoggerProvider>();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Nob*_*Guy 7

如果您运行的是 v4,则不会使用启动。

在 Program.cs 中执行依赖注入设置:

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults()
    .ConfigureServices(builder =>
    {
        builder.AddTransient<IUserService, UserService>();
        builder.AddTransient<ICompetitionService, CompetitionService>();
        builder.AddTransient<ICompetitionRepository, CompetitionRepository>();
    })
    .Build();

host.Run();
Run Code Online (Sandbox Code Playgroud)