gpt4 book ai didi

c# - 在Azure Function中运行控制台应用程序的program.cs文件?

转载 作者:行者123 更新时间:2023-12-03 02:18:21 25 4
gpt4 key购买 nike

我有一个控制台应用程序,我想将其转换为 Azure 函数计时器触发器应用程序,该应用程序将在完成一些数据处理和上传后每小时运行一次。数据处理和上传是通过注入(inject)控制台应用程序的program.cs 文件中的类完成的。在类(class)中的某个地方,我有一个任务。延迟 1 小时,它将在第一次查询和上传数据后查询新数据。因此,我将控制台应用程序的整个代码及其包复制到 Azure Function Timer 触发器应用程序。我想做的是首先在azure函数应用程序中运行控制台应用程序的program.cs文件,以便完成其工作(数据处理、查询数据、将数据上传到azure...)。然后启动定时器触发器。这可行吗?我可以在azure function app的run方法中添加哪行代码来先执行program.cs文件,然后启动触发器。您可以在此处找到azure函数时间触发器应用程序的启动代码。

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}");
}
}
}

最佳答案

有一些解决方案可以实现这一目标。

解决方案1.暂时将定时器触发器替换为http触发器

在调试应用程序时,我们只需注释原始 Run 函数的第一行并添加 http 触发器,如下所示:

public static async Task Run([HttpTrigger] Microsoft.AspNetCore.Http.HttpRequest req, ILogger log)
// public static async Task Run([TimerTrigger("0 0 * * * *")] TimerInfo myTimer, ILogger log)
{
// YOUR REGULAR CODE HERE
}

然后,在运行应用程序时,您将看到如下端点:

enter image description here

只需在浏览器(或 postman )中打开端点,该函数就会被调用。

在将代码推送到存储库之前,只需带回原始的 Run 函数并删除 http 触发器即可。

解决方案 2:添加另一个调用计时器函数的 http 触发器
将以下函数添加到您的应用程序以公开 http 触发器。

        [FunctionName("Test")]
public static async Task Test([HttpTrigger] Microsoft.AspNetCore.Http.HttpRequest req, ILogger log)
{
Run(null, log);
}

该函数基本上调用Run函数。因此,当您运行应用程序时,您将再次从控制台获得一个端点,可以从浏览器使用该端点来触发该功能。网址将如下所示:
http://localhost:7071/api/Test

关于c# - 在Azure Function中运行控制台应用程序的program.cs文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70168409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com