gpt4 book ai didi

c# - 具有依赖注入(inject)的 Azure 函数不会创建我的服务实例

转载 作者:行者123 更新时间:2023-11-30 22:53:27 25 4
gpt4 key购买 nike

我正在关注这篇文章,并实现了 Startup 类,以便我可以在构造函数中注入(inject)我的服务,但服务实例始终为 null,并且我收到 Object reference not set当我运行应用程序时,到对象的实例

下面是我的 Startup 类。

[assembly: FunctionsStartup(typeof(Backup.Functions.Startup))]
namespace Backup.Functions {
public class Startup: FunctionsStartup {
public override void Configure(IFunctionsHostBuilder builder) {
builder.Services.AddSingleton < IBlobService,
BlobService > ();
}
}
}

我的函数代码如下。

public class DeleteDailyBlobs {
private static IBlobService _blobService;
public DeleteDailyBlobs(IBlobService blobService) {
_blobService = blobService;
}
[FunctionName("DeleteDailyBlobs")]
public static void Run([TimerTrigger("0/3 * * * * *")] TimerInfo myTimer, ILogger log) {
if (_blobService.PerformTasks().GetAwaiter().GetResult()) {
log.LogInformation(SuccessMessages.FunctionExecutedSuccessfully);
}
else {
log.LogError(ErrorMessages.SomethingBadHappened);
}
}
}

这里的_blobService始终为空。

enter image description here

最佳答案

终于我找到了问题所在,不幸的是我忘记将我的函数标记为非静态,所以我所要做的就是删除static关键字来 self 的 Azure 函数。删除后,一切都很好。

public void Run([TimerTrigger("0/3 * * * * *")]TimerInfo myTimer, ILogger log)

enter image description here

希望有帮助。

正如 Nkosi 提到的,我们应该将函数的返回类型标记为 Task,我已经写了一篇关于此的文章,可以在 here 找到。 。

关于c# - 具有依赖注入(inject)的 Azure 函数不会创建我的服务实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57185237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com