2014-06-30 8 views
10

यह सवाल इस एक से संबंधित है: Running Azure WebJob without queueअनुसूचित Azure WebJob लेकिन NoAutomaticTrigger-विधि लागू नहीं

मेरे परिदृश्य: मैं बस ब्लॉब भंडारण में एक फ़ाइल प्रत्येक घंटे लिखना चाहते हैं और किसी भी कतार प्रणाली की जरूरत नहीं है।

[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(); 
    } 

वेबसाइट के साथ "AlwaysOn = सच" चल रहा है और webjob हर समय "चल रहा" है, लेकिन अब अनुसूचक: जो ठीक पहली बार यह शुरू हो रहा है काम किया - पूर्व प्रश्न से मैं इस कोड को मिला त्रुटि के बाद फेंकता है - और कुछ नहीं होता: "नौकरी पहले से चल रही है क्योंकि एक नया रन शुरू नहीं कर सकता।"

वर्तमान परिणाम यह है कि फ़ाइल केवल एक बार लिखा जाता है। अगर मैं "हमेशा" पर झूठ बोलता हूं तो यह "काम करता है", लेकिन यह गंदा लगता है क्योंकि हमेशा नौकरी के परिणाम के बिना "निरस्त" होता है।

उत्तर

16

"मांग पर" के रूप में चिह्नित नौकरी पूरी होनी चाहिए। आपके मामले में, समस्या RunAndBlock अंत में कॉल है। यदि आप उस विधि को कॉल करते हैं, तो कंसोल ऐप कभी नहीं रुकता है (यही कारण है कि नौकरी "पहले से चल रही है") क्योंकि RunAndBlock मूल रूप से while(true) लूप है।

RunAndBlock केवल निरंतर नौकरियों के लिए उपयोग किया जाना चाहिए।

+0

धन्यवाद - एक आकर्षण की तरह काम करता है। मैंने इस कोड उदाहरण से "रन एंडब्लॉक" लिया - शायद इसे वहां भी हटाया जाना चाहिए: http://aspnet.codeplex.com/SourceControl/latest#Samples/AzureWebJobs/BasicSamples/TableOperations/Program.cs –

+1

एचएम .. मुझे इस बात से सहमत होना है कि नमूना भ्रमित हो सकता है। विचार था कि नौकरी को निरंतर मांगना, मांग पर नहीं। मैं देखूंगा कि मैं इसे फिर से लिख सकता हूं या नहीं। मुझे –

+8

पता करने के लिए धन्यवाद क्या मुझे मेजबान का उपयोग करना चाहिए। स्टार्ट() विधि मैन्युअल रूप से वेबबेज ट्रिगर करने के लिए? – ManirajSS

संबंधित मुद्दे