2014-06-30 2 views
10

Questa domanda è legata a questo: Running Azure WebJob without queueScheduled Azure WebJob ma NoAutomaticTrigger-Metodo non invocato

mio scenario: Voglio solo scrivere un file ogni ora nella memorizzazione blob e non ho bisogno di alcun sistema di coda. Dalla ex domanda ho ottenuto questo codice - che ha lavorato bene la prima volta che viene attivato:

[NoAutomaticTrigger] 
    public static void DoWork([Blob("container/foobar.txt")] TextWriter writer) 
    { 
     writer.Write("Hello World " + DateTime.Now.ToShortTimeString())" 
    } 

    static void Main() 
    { 
     JobHost host = new JobHost(); 
     host.Call(typeof(Program).GetMethod("DoWork")); 

     host.RunAndBlock(); 
    } 

Il sito è in esecuzione con "AlwaysOn = true" e la webjob è "correre" per tutto il tempo, ma ora lo scheduler genera l'errore seguente e non accade nulla: "Impossibile avviare una nuova corsa poiché il processo è già in esecuzione."

Il risultato corrente è che il file viene scritto una sola volta. Se commuto "AlwaysOn" su false, "funziona", ma sembra sporco perché senza il risultato di Always on the job è "Aborted".

risposta

16

Un lavoro contrassegnato come "su richiesta" deve essere completato. Nel tuo caso, il problema è la chiamata RunAndBlock alla fine. Se chiami quel metodo, l'app della console non si arresta mai (ecco perché il lavoro "è già in esecuzione") perché RunAndBlock è fondamentalmente un ciclo while(true).

RunAndBlock deve essere utilizzato solo per lavori continui.

+0

Grazie - funziona come un fascino. Ho preso "RunAndBlock" da questo esempio di codice - forse dovrebbe essere rimosso anche qui: http://aspnet.codeplex.com/SourceControl/latest#Samples/AzureWebJobs/BasicSamples/TableOperations/Program.cs –

+1

Hm .. Devo dire che il campione potrebbe essere fonte di confusione. L'idea era di implementare quel lavoro come continuo, non su richiesta. Vedrò se riesco a riscriverlo. Grazie per avermi fatto sapere –

+8

Devo usare il metodo host.Start() per attivare manualmente un webjob? – ManirajSS