我有一個控制臺應用程式,我想將其轉換為 Azure Function Timer Trigger 應用程式,該應用程式將在完成一些資料處理和上傳后每小時運行一次。資料處理和上傳是通過注入到控制臺應用程式的 program.cs 檔案中的類來完成的。在課程中的某個地方,我有一個 task.delay by 1hour,它會在第一次查詢和上傳資料后查詢新資料。因此,我將控制臺應用程式的整個代碼及其包復制到 Azure Function Timer 觸發器應用程式。我想要做的是首先在 azure 函式應用程式中運行控制臺應用程式的 program.cs 檔案,以完成其作業(資料處理、查詢資料、將資料上傳到 azure ......)。然后啟動定時器觸發。那可行嗎?azure函式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}");
}
}
}
uj5u.com熱心網友回復:
有幾種解決方案可以實作這一點。
解決方案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
}
然后在運行應用程式時,您將看到如下端點:

只需在瀏覽器(或郵遞員)中打開端點,該函式就會被呼叫。
和右側前推代碼回購,只是帶回原來的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
uj5u.com熱心網友回復:
Azure 函式本質上是事件驅動的。如果函式觸發器表示事件已處理。
函式的運行方法意味著該函式已觸發及其入口點。
如果您想在此之前進行任何處理或代碼執行,您可能需要再撰寫一個函式并執行這些步驟,然后觸發另一個定時器觸發器或不同型別的函式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/371694.html
上一篇:為什么我的.NETCore標記助手不適用于我的HTML按鈕?
下一篇:AzureApplicationInsights與GraphQLAPI的集成-HotChocolateFramework
