Asp.net 将web应用发布到Azure网站临时部署槽失败,webjob

Asp.net 将web应用发布到Azure网站临时部署槽失败,webjob,asp.net,visual-studio,azure,azure-webjobs,azure-deployment-slots,Asp.net,Visual Studio,Azure,Azure Webjobs,Azure Deployment Slots,我刚刚为我的应用程序创建了一个新的部署槽,将发布配置文件导入Visual Studio,但部署后我收到以下错误消息: 错误8:创建WebJob计划时出错:找不到与网站名[myapp_uuStaging]和网站URL[supplied]匹配的网站 我有两个webjob,一个是连续webjob,一个是计划webjob 如所述,我已登录到正确的Azure帐户 为了将我的应用部署到带有webjobs的临时部署槽,我是否需要设置其他设置 我的应用程序正在使用ASP.NET,如果有什么不同的话?使用Azur

我刚刚为我的应用程序创建了一个新的部署槽,将发布配置文件导入Visual Studio,但部署后我收到以下错误消息:

错误8:创建WebJob计划时出错:找不到与网站名[myapp_uuStaging]和网站URL[supplied]匹配的网站

我有两个webjob,一个是连续webjob,一个是计划webjob

如所述,我已登录到正确的Azure帐户

为了将我的应用部署到带有webjobs的临时部署槽,我是否需要设置其他设置


我的应用程序正在使用ASP.NET,如果有什么不同的话?

使用Azure调度程序时有一些怪癖。建议改用新的CRON支持。您可以了解更多关于它的信息。

Jeff

正如David所建议的,您可以/应该迁移到新的CRON支持。下面是一个示例。WebJob将作为一个连续的WebJob部署

请记住,为了使用它,您需要安装WebJobs包和当前预发布的扩展。您可以在Nuget上获得它们

安装包Microsoft.Azure.WebJobs-预安装 安装包Microsoft.Azure.WebJobs.Extensions-预安装

另外,正如David建议的,如果您不使用WebJobs SDK,也可以使用settings.job文件运行它

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();
}
public class Functions
{
    public void YourMethodName([TimerTrigger("00:05:00")] TimerInfo timerInfo, TextWriter log)
    {
        //This Job runs every 5 minutes. 
        //Do work here. 
    }
}
函数.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();
}
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"
}

他们做了同样的事情?@Jeff他们做了。你可以用这两者来完成同样的事情。@lopezbertoni太好了!所以我只需要在应用新的CRON东西之前删除计划?或者还有更多的方法来将现有的webjob转换为使用CRON吗?有关Web应用程序和使用CRON计划的webjob的示例,请参阅。
webjob publish settings.json
没有调度信息,因为它位于
设置.job
中。您可能还需要删除Azure门户中的调度程序资源以进行清理。@Speedbird186是的,调度的作业是“触发”的,因此这是意料之中的。如果它在门户中显示调度,则表明您状态良好。请确保您已启用“Awlays On”以n Web应用程序。很好-我的webjob JSON文件中有什么需要更改的吗?@Jeff确保它设置为作为连续webjob运行。我将用我的JSON文件更新我的答案。太好了,谢谢!那么什么时候可以使用调度程序?当使用工作者角色时?请注意,这与我描述的
设置.job
CRON不同。
settings.job
用于一般WebJobs(例如,您可以使用它来启动批处理文件),这种技术是WebJobs SDK特有的。@Davidebo感谢David的澄清!很高兴知道!