当前位置: 首页 > 知识库问答 >
问题:

Azure 函数,依赖关系注入,“没有给出与正式参数相对应的参数”,dotnet 核心

苏阳州
2023-03-14

我试图从Azure函数调用存储库类,但遇到了一个错误

没有对应于形参的给定参数

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

repository类的构造函数如下所示:

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)
{
    // ...
}

共有1个答案

叶翰林
2023-03-14

您可以在< code>Startup类中定义依赖项声明,如该文件所示,以后不要将函数定义为< code>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
    }
}
 类似资料:
  • 使用指南 - 统计设置 - 第三方推广管理 - hm参数与utm参数的对应关系 百度统计通过落地页中URL的参数来识别该URL的广告信息,点此了解什么是URL参数。 百度统计标识广告信息一直采用hm参数,即hmsr、hmpl、hmcu、hmkw、hmci五个参数。同时也有用户习惯使用utm参数,即utm_source、utm_medium、utm_campaign、utm_term、utm_con

  • 我有一个时间触发的Azure功能

  • 我已经能够让用net core编写的Azure函数运行。我现在添加了对“WindowsAzure.存储”的引用,现在当我使用本地测试环境(“func主机启动”)时,我得到了加载体验。 我不能使用默认的表存储绑定器,因为我需要在不同的表中重新插入记录。 我使用预编译函数,正在OSX上使用VSCode进行开发。如果支持或不支持此方案,我找不到任何信息。甚至有可能让外部依赖项与Azure函数的2.0运行

  • 我需要重构现有的抽象类来实现依赖注入,但是这个类有两个接受其他参数的构造函数。 我需要注入一些接口,并避免在构造函数中传递任何其他参数,如“settingsId”和“Setting”。所以我的想法是在创建此类的实例后创建两种方法来设置这些参数。 但它看起来不是一个合适的解决方案,因为如果开发人员忘记在创建实例后运行这些方法之一,我们将来可能会得到一个异常(对象未设置为引用...)。我应该如何正确执

  • 我正在使用Azure函数v3和DI。我有一个服务,我在启动时设置了一个短暂的生命周期。cs(使用:

  • 我有一个关于 azure 函数 v1 中的依赖注入的新问题。 实际情况: 我有一个azure函数V1,我想在其中引用我的业务服务,而无需重新发明轮子即可使用我的服务。我在Internet上搜索并找到了这篇来自Microsoft的有趣文章。 但是,它似乎只适用于azure函数v2(. net core),因为每当我尝试安装时,我总是收到以下错误: 检测到Microsoft.Azure.WebJobs