使用另一个项目中的 Azure Functions

Posted

技术标签:

【中文标题】使用另一个项目中的 Azure Functions【英文标题】:Using Azure Functions from another project 【发布时间】:2022-01-17 16:55:14 【问题描述】:

我正在尝试创建一个包含 Azure 函数的基础/抽象类,当它从基础继承时,我可以从 在不同的项目中使用它,但似乎无法获得第一个项目的基类中的函数。

(目前在VS2019的.Net Core 3.1中使用Azure Functions v3)

这是我尝试过的...

项目 1 中的基类:

public class BaseClass

    [FunctionName("Function1")]
    public IActionResult Function1(
           [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,
           ILogger log)
    
           // Function 1 code in here
    

项目 2 中的新类:

public class NewClass : BaseClass

    [FunctionName("Function2")]
    public IActionResult Function2(
           [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,
           ILogger log)
    
           // Function 2 code in here
    

所以,当我在本地运行项目 2 时,我认为我应该准备好使用 Function1 和 Function2 端点,但我只获得了可用的 Function2 端点。

如果我在本地运行项目 1,我将获得函数 1 的端点。

这在 Azure Functions 中是否可行,如果可以,我该如何实现?

更新 - 如果我将 BaseClass 从项目 1 移动到项目 2,我会得到我想要的,即同时获得函数 1 和函数 2。

更新 2 复制步骤:

    创建项目 1:创建面向 .Net 3.1 的新 Azure Functions v3。 使用 HTTP 触发器添加 Azure 函数。 运行项目。 (基本/演示功能 1 应按预期运行。) 创建项目 2:在同一解决方案中添加另一个新项目:面向 .Net 3.1 的 Azure Functions v3。 使用 HTTP 触发器添加 Azure 函数(到新项目)。 运行新项目。 (基本/演示功能 2 应按预期运行。) 将项目 2 中的项目引用添加到项目 1。 使项目 2 的类继承自项目 1 的类。 将每个项目中的每个函数更改为不是静态类(以允许继承工作) 运行项目 2 - 仅显示项目 2 的功能。

...然后...

将 Function1.cs 文件从项目 1 移动到项目 2 并适当地重命名类/命名空间,然后运行项目...显示两个函数。

【问题讨论】:

道歉 - 这个问题的初稿可能没有涵盖所有角度/元素,这很可能是我被否决的原因。 :-( 希望现在更有意义。 【参考方案1】:

解决方法之一是在派生类中调用基类的对象,即。 如果您的解决方案如下所示

Solution
│   Base Project
└───────BaseFunction.cs   
│   Derived Project
└───────DerivedFunction.cs

在您的 DerivedFunction.cs 中,您可以使用 DerivedProject.DerivedFunction.Run()

但使用 Azure 函数的全部意义在于在一个项目中拥有多个函数,这些函数将同时部署。因此,无论您在做什么都是可以预期的(即,将 Project2 中的函数添加到 project1 并使用继承)。

如果您尝试同时调试这两个功能,则可以添加其他项目并使用对现有项目的引用但使用不同的端口。

参考: Multiple Azure App Function in a project Multiple function projects using different ports

【讨论】:

以上是关于使用另一个项目中的 Azure Functions的主要内容,如果未能解决你的问题,请参考以下文章

Azure Functions 中的配置文件

来自 Azure Functions 的莫名其妙的存储事务

Azure Functions ServiceBus 触发器缩放行为

Azure Functions 与 Azure 流分析

在 Java 中使用 Visual Studio Code 的 Azure Functions 项目

Azure Functions:我可以对 BlobTriggered 函数进行不同的配置吗?