首页 > 解决方案 > Azure 函数,依赖注入,“没有给出与形参对应的参数”,dotnet core

问题描述

我正在尝试从 Azure 函数调用存储库类,但出现错误

没有给出与形式参数相对应的参数

我从 .NET Core Web API 项目中复制了存储库类结构,并且知道这与依赖注入有关。

存储库类的构造函数如下所示:

public CaseRepository(ILogger<CaseRepository> logger, IConfiguration configuration)
{
    _logger = logger;
    _configuration = configuration;
}

我如何将它传递给 Azure 函数的静态方法,就像我对这样的 Web API 调用所做的那样:

[FunctionName("TestFunction")]
public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
        ILogger log, CaseRepository caseRepository)
{
    // ...
}

标签: c#asp.net-coreazure-functions

解决方案


您可以在此文件Startup中显示的类中定义依赖项声明,然后再将函数定义为定义它的普通类函数。在类构造函数中注入所需的依赖项。请参阅此内容以供参考。static

创业班

 [assembly: FunctionsStartup(typeof(YourNamespace.Startup))]

 namespace YourNamespace
 {
   public class Startup : FunctionsStartup
   {
      builder.Services.AddSingleton<ICaseRepository, CaseRepository>();
   }
 }

用法 - 这里 ICaseRepository被注入到包含 Azure 函数的类中。

public class TestFunction
{
    private readonly ICaseRepository caseRepository;

    public TestFunction(ICaseRepository  caseRepository)
    {
        this.caseRepository= caseRepository;
    }

    [FunctionName("TestFunction")]
    public async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
        ILogger log)
    {
        // ... use caseRepository instance
    }
}

推荐阅读