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)
为什么启动类没有被调用?
我在您的代码片段中没有看到两件事。
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)
如果您运行的是 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)
| 归档时间: |
|
| 查看次数: |
4425 次 |
| 最近记录: |