我想每天早上5点运行一个任务,将一些数据写入数据库以创建一些报告。为此,我想我可以使用Azure Functions(Timer trigger)。我的目标是在将函数发布到Azure之前,首先在本地调试该函数(使用本地数据库)。为此,我在Visual Studio 2019中创建了一个新的Azure Functions项目,并使用以下参数:
- .NET 5.0(独立)。
- 定时器触发。
- 存储帐户(AzureWebJobsStorage):存储仿真器。
- 计划:0 0 5 * * *
如果我尝试在不对代码进行任何更改的情况下运行该函数(按键盘上的F5),则会打开一个CMD窗口,其中包含使用字符创建的彩色Azure Functions徽标,然后出现以下错误:
错误:未知参数--port
在项目属性〉调试选项卡〉应用程序参数中,我有--port 7282
。我有一个系统托盘图标,显示以下消息:存储仿真器已启动。
我尝试了What is the simplest way to run a timer-triggered Azure Function locally once?问题的答案,但得到了相同的错误。
我需要做些什么才能在本地调试函数?我需要安装任何特定的工具吗?
如果有帮助,我有以下文件:
程序.cs
public class Program
{
public static void Main()
{
var host = new HostBuilder()
.ConfigureFunctionsWorkerDefaults()
.Build();
host.Run();
}
}
函数1.cs:
public class Function1
{
private readonly ILogger _logger;
public Function1(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger<Function1>();
}
[Function("Function1")]
public void Run([TimerTrigger("0 0 5 * * *")] MyInfo myTimer)
{
_logger.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
_logger.LogInformation($"Next timer schedule at: {myTimer.ScheduleStatus.Next}");
}
}
public class MyInfo { ... }
public class MyScheduleStatus { ... }
1条答案
按热度按时间fv2wmkja1#
为什么是港口?
如果你删除
--port
会发生什么(不能评论,由于我的低代表。有我试图给予答案)然后尝试将
RunOnStartup=true
添加到Function参数,如下所示:这应该会触发它在应用程序启动时运行。
你看过MS Learn docs了吗