使用 webjob 将 Web 应用程序发布到 Azure 网站暂存部署槽失败
Publishing web app to Azure Websites Staging deployment slot fails with webjob
我刚刚为我的应用程序创建了一个新的部署槽,将发布配置文件导入到 Visual Studio,但部署后我收到此错误消息:
Error 8: An error occurred while creating the WebJob schedule: No website could be found which matches the WebSiteName [myapp__staging] and WebSiteUrl [http://myapp-staging.azurewebsites.net] supplied.
我有 2 个网络作业,一个连续的和一个计划的网络作业。
我已经登录到正确的 Azure 帐户,如 this answer 所述。
我是否需要进行其他设置才能将我的应用程序部署到带有 webjobs 的暂存部署槽?
我的应用程序正在使用 ASP.NET,它是否有影响?
杰夫,
正如 David 所建议的,您 can/should 迁移到新的 CRON 支持。这是一个例子。 WebJob 将作为连续的 WebJob 部署。
请记住,为了使用它,您需要安装当前预发布的 WebJobs 包和扩展。您可以在 Nuget 上获取它们。
Install-Package Microsoft.Azure.WebJobs -Pre
Install-Package Microsoft.Azure.WebJobs.Extensions -Pre
另外,正如 David 所建议的,如果您不使用 WebJobs SDK,您也可以 运行 使用 settings.job 文件。他提供了一个例子 here.
Program.cs
static void Main()
{
//Set up DI (In case you're using an IOC container)
var module = new CustomModule();
var kernel = new StandardKernel(module);
//Configure JobHost
var storageConnectionString = "your_connection_string";
var config = new JobHostConfiguration(storageConnectionString) { JobActivator = new JobActivator(kernel) };
config.UseTimers(); //Use this to use the CRON expression.
//Pass configuration to JobJost
var host = new JobHost(config);
// The following code ensures that the WebJob will be running continuously
host.RunAndBlock();
}
Function.cs
public class Functions
{
public void YourMethodName([TimerTrigger("00:05:00")] TimerInfo timerInfo, TextWriter log)
{
//This Job runs every 5 minutes.
//Do work here.
}
}
您可以在 TimerTrigger 属性中更改计划。
更新 添加了 webjob-publish-settings.json 文件
这是 webjob-publis-settings.json
的示例
{
"$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
"webJobName": "YourWebJobName",
"startTime": null,
"endTime": null,
"jobRecurrenceFrequency": null,
"interval": null,
"runMode": "Continuous"
}
我刚刚为我的应用程序创建了一个新的部署槽,将发布配置文件导入到 Visual Studio,但部署后我收到此错误消息:
Error 8: An error occurred while creating the WebJob schedule: No website could be found which matches the WebSiteName [myapp__staging] and WebSiteUrl [http://myapp-staging.azurewebsites.net] supplied.
我有 2 个网络作业,一个连续的和一个计划的网络作业。
我已经登录到正确的 Azure 帐户,如 this answer 所述。
我是否需要进行其他设置才能将我的应用程序部署到带有 webjobs 的暂存部署槽?
我的应用程序正在使用 ASP.NET,它是否有影响?
杰夫,
正如 David 所建议的,您 can/should 迁移到新的 CRON 支持。这是一个例子。 WebJob 将作为连续的 WebJob 部署。
请记住,为了使用它,您需要安装当前预发布的 WebJobs 包和扩展。您可以在 Nuget 上获取它们。
Install-Package Microsoft.Azure.WebJobs -Pre Install-Package Microsoft.Azure.WebJobs.Extensions -Pre
另外,正如 David 所建议的,如果您不使用 WebJobs SDK,您也可以 运行 使用 settings.job 文件。他提供了一个例子 here.
Program.cs
static void Main()
{
//Set up DI (In case you're using an IOC container)
var module = new CustomModule();
var kernel = new StandardKernel(module);
//Configure JobHost
var storageConnectionString = "your_connection_string";
var config = new JobHostConfiguration(storageConnectionString) { JobActivator = new JobActivator(kernel) };
config.UseTimers(); //Use this to use the CRON expression.
//Pass configuration to JobJost
var host = new JobHost(config);
// The following code ensures that the WebJob will be running continuously
host.RunAndBlock();
}
Function.cs
public class Functions
{
public void YourMethodName([TimerTrigger("00:05:00")] TimerInfo timerInfo, TextWriter log)
{
//This Job runs every 5 minutes.
//Do work here.
}
}
您可以在 TimerTrigger 属性中更改计划。
更新 添加了 webjob-publish-settings.json 文件
这是 webjob-publis-settings.json
的示例{
"$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
"webJobName": "YourWebJobName",
"startTime": null,
"endTime": null,
"jobRecurrenceFrequency": null,
"interval": null,
"runMode": "Continuous"
}