使用另一个项目中的 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 ServiceBus 触发器缩放行为