c# - 直接在函数方法中注入(inject) DI 实例 (Azure Functions)

标签 c# azure dependency-injection azure-functions

我想直接在 Azure 函数方法/主体中注入(inject)对象实例,如下所示:

[FunctionName("StartJob")]
public async Task<IActionResult> Start(
    [HttpTrigger(AuthorizationLevel.Function, "Post", Route = "v1/job")] HttpRequest req,
    IStartJobHandler handler)
{
...

但是当我这样做时出现运行时错误:

“StartJob”函数出现错误:Microsoft.Azure.WebJobs.Host:索引方法“StartJob”出错。 Microsoft.Azure.WebJobs.Host:无法将参数“handler”绑定(bind)到类型 IStartJobHandler。确保绑定(bind)支持参数类型。如果您使用绑定(bind)扩展(例如 Azure 存储、ServiceBus、定时器等),请确保您已在启动代码中调用扩展的注册方法(例如 builder.AddAzureStorage()、builder.AddServiceBus( )、builder.AddTimers() 等)。

如果我在构造函数中注入(inject)相同的实例 - 一切都很好。 (所以不需要建议我检查我的启动类等等:))

但我不想注入(inject)构造函数。因为实例只属于一个特定的函数,其想法是隔离函数之间的实例。

所以,问题是:我是否可以直接在 azure 函数方法中注入(inject)自定义类,而无需编写额外的代码,例如 ILogger:

[FunctionName("StartJob")]
public async Task<IActionResult> Start(
    [HttpTrigger(AuthorizationLevel.Function, "Post", Route = "v1/job")] HttpRequest req,
    ILogger logger)
{
...

或者,它只是不受支持?

谢谢。

最佳答案

将自定义类直接注入(inject)到 Function 中是不可能的,您仍然需要注入(inject)构造函数来实现您的想法。如果您不选择注入(inject)构造函数,则依赖项将不可用。编写额外的代码是必要的。这是正确的方法:

https://learn.microsoft.com/en-us/azure/azure-functions/functions-dotnet-dependency-injection#use-injected-dependencies

关于c# - 直接在函数方法中注入(inject) DI 实例 (Azure Functions),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60211245/

相关文章:

c# - 如何在 Visual Studio 2013 中安装 MongoDB.Driver

c# - 如何通过页面加载 asp.net 判断表单复选框是否被选中

c# - 路径之谜中的非法字符

Azure 安全中心使用过多存储空间

HTTP Webhook 回调 URL 上的 JSON 架构验证(Azure 逻辑应用)

azure - 通过 azure 管道克隆 Gitlab 存储库,显示 SSL 错误

c# - Autofac - InstancePerHttpRequest 与 InstancePerLifetimeScope

angular - 依赖注入(inject)抽象类 typescript (Angular2)

C# 与 Java?

.net - 团结 : how to resolve class through base interface