未调用.netcore Azure函数启动类

jljoyd4f  于 2023-02-05  发布在  .NET
关注(0)|答案(3)|浏览(125)

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

为什么不调用启动类?

9udxz4iz

9udxz4iz1#

有两件事我在你的代码片段中没有看到。
1-[程序集:函数启动(类型of(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>();
        }
    }
}
toiithl6

toiithl62#

我面临着同样的问题,我必须从我的解决方案中删除我的项目,并重新创建一个新的要调用的statup。
我怀疑某个地方出现了版本错误

zpf6vheq

zpf6vheq3#

如果您运行的是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();

相关问题