简体   繁体   中英

.netcore Azure functions startup class is not called

My Azure function doesn't calls the startup class localy. When running the project, my brekpoint doesn't hit the DependencyRegistrations.Register function.

Package Microsoft.Azure.Functions.Extensions is correctly installed

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);
        }
    }
}

在此处输入图像描述

Why is the startup class not called?

Two things I'm not seeing in your code snippet.

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

2- Are you sure the nuget package was properly installed? (Microsoft.Azure.Functions.Extensions)

The final startup code should look like the following:

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>();
        }
    }
}

I face the same issue, i have to remove my project from my solution and recreate an new to have the statup to be called...

I suspect a version mistake somewhere

Just in case you're running v4, Startup is not used.

Perform the dependency injection setup in Program.cs:

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

host.Run();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM