发布Web应用到Azure网站的暂存部署槽失败,伴随着WebJob。

4
我刚为我的应用程序创建了一个新的部署插槽,在Visual Studio中导入了发布配置文件,但是在部署后,我收到了以下错误消息:
错误8:创建WebJob计划时出错:找不到与提供的WebSiteName [myapp__staging]和WebSiteUrl [http://myapp-staging.azurewebsites.net]匹配的网站。
我有两个WebJob,一个是连续的,另一个是按计划运行的WebJob。
我已经登录到正确的Azure帐户中,如this answer所述。
我需要设置其他内容以便将我的应用程序部署到带有WebJobs的暂存部署插槽中吗?
如果我的应用程序使用ASP.NET,是否会有所不同?
2个回答

5

使用Azure Scheduler时有一些小问题。建议使用新的CRON支持代替。您可以在此处此处了解更多信息。


它们做同样的事情吗? - Jeff
@Jeff 他们都可以。你可以用两者来实现同样的事情。 - lopezbertoni
@lopezbertoni 太好了!那么我只需要在应用新的CRON内容之前删除计划表吗?或者将现有的WebJob转换为使用CRON还需要做更多工作吗? - Jeff
2
请参考 https://github.com/davidebbo/ForumScorer 中的 Web 应用程序和 WebJob 示例,该示例使用 CRON 调度。请注意,webjob-publish-settings.json 文件中没有调度信息,而是在 settings.job 文件中。您可能还需要在 Azure 门户中删除调度程序资源以进行清理。 - David Ebbo
1
@Speedbird186 是的,定时作业是“触发”执行的,所以这是预期的。如果在门户中显示了计划,则状态良好。确保在 Web 应用程序上启用了“始终开启”。 - David Ebbo
显示剩余2条评论

3

Jeff,

正如David所建议的那样,您可以/应该迁移到新的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-publiss-settings.json文件的示例。
{
  "$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
  "webJobName": "YourWebJobName",
  "startTime": null,
  "endTime": null,
  "jobRecurrenceFrequency": null,
  "interval": null,
  "runMode": "Continuous"
}

很好 - 我的 WebJob JSON 文件需要更改吗? - Jeff
1
@Jeff 确保将其设置为作为连续的 WebJob 运行。我会在我的答案中更新我的 JSON 文件。 - lopezbertoni
非常好,谢谢!那么什么时候应该使用调度程序呢?在使用工作角色时? - Jeff
1
请注意,这是一种不同于我所描述的 settings.job CRON 的技术。settings.job 适用于一般的 WebJobs 使用(例如,您可以使用它来启动批处理文件),而这种技术则专门针对 WebJobs SDK。 - David Ebbo
@lopezbertoni 值得一提的是,要使用此代码,您需要Microsoft.Azure.WebJobs.Extensions NuGet包,该包处于预发布状态。 @DavidEbbo 那么在您的示例中,Azure只是因为存在settings.job而调用了按需WebJob? - Jeff
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接