【发布时间】:2022-01-07 02:41:34
【问题描述】:
我有一个控制台应用程序,我想将其转换为 Azure Function Timer Trigger 应用程序,该应用程序将在完成一些数据处理和上传后每小时运行一次。数据处理和上传是通过注入到控制台应用程序的 program.cs 文件中的类来完成的。在课堂上的某个地方,我有一个 task.delay by 1hour,它将在第一次查询和上传数据后查询新数据。因此,我将控制台应用程序的整个代码及其包复制到了 Azure Function Timer 触发器应用程序。我要做的是首先在 azure 函数应用程序中运行控制台应用程序的 program.cs 文件,以完成其工作(数据处理、查询数据、将数据上传到 azure ......)。然后启动定时器触发。那可行吗?我可以在azure函数应用的run方法中添加哪行代码先执行program.cs文件,然后再启动触发器。您可以在此处找到 azure function time trigger app 的启动代码。
using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
namespace ExportServiceFunctionApp
{
public static class ExportServiceFunctionApp
{
[FunctionName("ExportServiceFunctionApp")]
public static void Run([TimerTrigger("0 0 */1 * * * ")]TimerInfo myTimer, ILogger log)
{
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
}
}
}
【问题讨论】:
-
嗨@Aboudi,欢迎来到 Stackoverflow!您能否编辑您的问题并在那里添加代码而不是提供图片?这将使我们更容易快速编辑并提供答案。
-
@JustShadow 我编辑了我的问题。谢谢你。只是关于你的问题。我为什么要使用 httptrigger。由于代码中没有提到main方法,它怎么会知道如何执行program.cs文件。请注意,我仍在本地运行它。如何在这个 http 触发器中调用 main 方法。不能自己调用
-
无法自行调用 Azure 函数。他们正在等待触发。并且有不同的触发因素。如果使用 HttpTrigger,Azure 函数将公开一个常规端点,以便您可以通过常规 http GET/POST/.. 调用来调用它们。关于 main 方法,将控制台应用程序的 main 方法的代码移至此处的“运行”方法。然后您可以使用以下答案中提到的解决方案。
-
@JustShadow 我可以只使用时间触发器而不使用httptrigger。所以我所做的就是在 Azure Function 的 run 方法中添加了 main 方法的代码。当我按下 F5 时,它开始工作,但是它给了我一个与应用程序洞察相关的异常。但是让我们忽略这个异常,它实际上在没有 httptrigger 的情况下工作?
-
当然你可以只使用timertrigger,但在这种情况下按下F5后,你需要等待你在代码中提到的适当时间(“0 0 */1 * * *")。不会一按F5就触发
标签: c# .net azure azure-functions