Tengo un Azure WebJob que estoy publicando desde Visual Studio 2017 a un Servicio de aplicaciones estándar S1, el WebJob debe ser activado por CRON, pero siempre se publica como Continuo y no puedo entender lo que he hecho mal (otros dos WebJobs publican bien)

Tengo el Servicio de aplicaciones configurado en 'Siempre activado' en la configuración de la aplicación ingrese la descripción de la imagen aquí

Tengo un archivo settings.job en la raíz con mi horario

{
     "schedule": "0 3 5 * * 1-5"
}

enter image description here

Mi clase de programa

namespace EventPushUpdater
{
    using Microsoft.Azure.WebJobs;
    using MBL.AzureKeyVaultHelpers;

    internal class Program
    {
        private static void Main()
        {
            Properties.Settings s = Properties.Settings.Default;

            IKeyVault kv = new KeyVaultHelper(s.ClientId, s.ClientKey, s.KeyVaultRoot);

            var config = new JobHostConfiguration();
            config.DashboardConnectionString = kv.GetSecretValue(s.DashboardConnectionString);
            config.StorageConnectionString = kv.GetSecretValue(s.DashboardConnectionString);            
            var host = new JobHost(config);

            host.Call(typeof(Functions).GetMethod("PushEvents"), new { keyVault = kv });
        }
    }

}

Y la función que se llama

public class Functions
{
    [NoAutomaticTrigger]
    public static void PushEvents(IKeyVault keyVault)
    {
         // do stuff
    }
}
2
Stuart 23 jun. 2017 a las 15:01

3 respuestas

La mejor respuesta

La primera vez que elige 'Publicar como WebJob', le pregunta si desea Continuo o Bajo demanda (que incluye programado):

WebJob publish

Si eligió la opción incorrecta, simplemente elimine webjob-publish-settings.json en Propiedades e intente nuevamente.

Además, su código es demasiado complejo ya que innecesariamente usa WebJobs SDK . En cambio, su código puede ser simplemente:

    static void Main()
    {
        // Do Stuff
    }
5
David Ebbo 23 jun. 2017 a las 14:15

Puede cambiar entre los modos 'Continuo' y 'Activado' editando el archivo webjob-publishing-settings.json que se encuentra dentro de la carpeta Propiedades de su proyecto WebJob.

webjob-publish-settings.json

En este archivo json puede establecer "runMode:" en Continuo o OnDemand (activado):

Continua

Continuous

Bajo demanda

Triggered

5
bev 13 mar. 2018 a las 21:22

¿Has configurado { "is_singleton": true } en tu settings.job? Si es así, no puede ejecutar más de una instancia de su WebJob. Si publica y ejecuta su WebJob en la nube de Azure, nunca podrá ejecutarlo localmente a menos que use una cuenta de almacenamiento diferente.

El disparador del temporizador de Azure Webjob no se activa

1
Amir Razmjou 24 jul. 2018 a las 17:05