[英]Debug Azure WebJob locally
我一直在創建一個Azure WebJob,它的工作非常好,但是我需要創建一個新的功能,我需要在上傳到生產站點之前進行本地測試,我運行調試控制台程序,這可以識別所有功能,但我不能觸發任何功能。
文檔說下一個觸發器是每分鍾....( https://github.com/Azure/azure-webjobs-sdk-extensions#timertrigger )
我的代碼:
public static async void ProcessAugustEndowments([TimerTrigger("0 */1 * * * *", RunOnStartup = true)] TimerInfo timerInfo)
{
Console.WriteLine("Endowments process tried");
await endowmentNotification();
}
我運行調試控制台程序,這識別所有功能,但我不能觸發任何功能。
根據你的代碼,我測試了它,發現當我第一次調試應用程序時,我可以得到以下輸出:
但是,當我重新啟動應用程序時,我發現觸發該功能需要一些時間。
請確保您已安裝“Microsoft.Azure.WebJobs”和“Microsoft.Azure.WebJobs.Extensions”的最新版本軟件包。 有關更多詳細信息,請參閱本教程 。
請嘗試減少TimerTrigger
的時間間隔並等待作業主機啟動時的一段時間,然后嘗試找出是否可以觸發該功能。 這是我的代碼示例,您可以參考它。
Program.cs中
static void Main()
{
JobHostConfiguration config = new JobHostConfiguration();
// Add Triggers and Binders for Timer Trigger.
config.UseTimers();
JobHost host = new JobHost(config);
//host.RunAndBlock();
host.Start();
Console.WriteLine("[{0}] Job Host started!!!", DateTime.Now);
Console.ReadLine();
}
Function.cs
//Function triggered by a timespan schedule every 5 sec.
public static async void ProcessAugustEndowments([TimerTrigger("*/5 * * * * *", RunOnStartup = true)] TimerInfo timerInfo)
{
Console.WriteLine("Endowments process tried");
await endowmentNotification();
}
private static async Task endowmentNotification()
{
//sleep for 2 sec to simulate processing business logic
await Task.Delay(TimeSpan.FromSeconds(2));
}
另外,如果TimerTrigger
無法滿足您的要求,您可以參考這個官方教程來創建一個計划WebJob,也可以參考這個博客 。
如果您的功能不會被觸發,我相信那是因為你沒有配置JobHost
您使用TimerTrigger
:
var config = new JobHostConfiguration();
config.UseTimers();
JobHost
如何與觸發器一起使用:
當JobHost
啟動時,它會發現一些*TriggerAttribute
並將函數編入索引。
通過指定config.UseTimers();
告訴JobHost
使用TimerTriggerAttribute
索引函數。
這對於需要config.UseServiceBus()
才能工作的其他類型的觸發器(如ServiceBusTrigger
config.UseServiceBus()
也有效
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.