运行 Azure WebJob 本地服务器
Run Azure WebJob on premises server
我正在处理的应用程序必须可部署在 Azure 和 Windows 服务器上。
我正在使用 Continuous Azure WebJob,它有一些带有 [TimerTrigger]
属性的方法,在 Azure 上运行良好。但我希望它们在本地部署时也能触发。
这东西受支持吗?从 DevOps 的角度来看,在 Windows 服务器上连续使用带有 Azure WebJob SDK 运行 的 exe 的推荐方法是什么?
我正在使用 .NET Core 3 和 Microsoft.Azure.Webjobs 3.0 SDK。
你可以把web job项目看做一个console项目,只需要连续点击your_webjob.exe到运行(通过指定TimerTrigger)。您可以按照此 article 创建一个 .NET 核心 web 作业。
这是一个例子:
1.Create一个.NET core 3.0控制台项目,并安装以下nuget包:
Microsoft.Azure.WebJobs.Extensions, version 3.0.0
Microsoft.Azure.WebJobs.Extensions.Storage, version 3.0.10
Microsoft.Extensions.Logging.Console, version 3.0.0
2.Here是program.cs中的代码:
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
var builder = new HostBuilder();
builder.ConfigureWebJobs(b =>
{
b.AddTimers();
b.AddAzureStorageCoreServices();
b.AddAzureStorage();
});
builder.ConfigureLogging((context, b) =>
{
b.AddConsole();
});
var host = builder.Build();
using (host)
{
host.Run();
}
}
}
}
3.Add appsettings.json文件到项目中,然后右击appsettings.json文件->select属性->设置"Copy to Output Directory"为"Copy if newer"。这是 appsettings.json:
{
"ConnectionStrings": {
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=xx;AccountKey=xxx;EndpointSuffix=core.windows.net"
}
}
在项目中添加一个Functions.cs。这是 Functions.cs:
中的代码
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
namespace ConsoleApp2
{
public class Functions
{
public static void CronJob([TimerTrigger("0 */1 * * * *")] TimerInfo timer, ILogger logger)
{
logger.LogInformation("this is a test message!");
}
}
}
5.Build工程,然后进入your_webjob.exe所在的文件夹,双击.exe文件,就可以在本地连续运行:
我正在处理的应用程序必须可部署在 Azure 和 Windows 服务器上。
我正在使用 Continuous Azure WebJob,它有一些带有 [TimerTrigger]
属性的方法,在 Azure 上运行良好。但我希望它们在本地部署时也能触发。
这东西受支持吗?从 DevOps 的角度来看,在 Windows 服务器上连续使用带有 Azure WebJob SDK 运行 的 exe 的推荐方法是什么?
我正在使用 .NET Core 3 和 Microsoft.Azure.Webjobs 3.0 SDK。
你可以把web job项目看做一个console项目,只需要连续点击your_webjob.exe到运行(通过指定TimerTrigger)。您可以按照此 article 创建一个 .NET 核心 web 作业。
这是一个例子:
1.Create一个.NET core 3.0控制台项目,并安装以下nuget包:
Microsoft.Azure.WebJobs.Extensions, version 3.0.0
Microsoft.Azure.WebJobs.Extensions.Storage, version 3.0.10
Microsoft.Extensions.Logging.Console, version 3.0.0
2.Here是program.cs中的代码:
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
var builder = new HostBuilder();
builder.ConfigureWebJobs(b =>
{
b.AddTimers();
b.AddAzureStorageCoreServices();
b.AddAzureStorage();
});
builder.ConfigureLogging((context, b) =>
{
b.AddConsole();
});
var host = builder.Build();
using (host)
{
host.Run();
}
}
}
}
3.Add appsettings.json文件到项目中,然后右击appsettings.json文件->select属性->设置"Copy to Output Directory"为"Copy if newer"。这是 appsettings.json:
{
"ConnectionStrings": {
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=xx;AccountKey=xxx;EndpointSuffix=core.windows.net"
}
}
在项目中添加一个Functions.cs。这是 Functions.cs:
中的代码using Microsoft.Azure.WebJobs; using Microsoft.Extensions.Logging; namespace ConsoleApp2 { public class Functions { public static void CronJob([TimerTrigger("0 */1 * * * *")] TimerInfo timer, ILogger logger) { logger.LogInformation("this is a test message!"); } } }
5.Build工程,然后进入your_webjob.exe所在的文件夹,双击.exe文件,就可以在本地连续运行: