2011-06-16 15 views
5

मैं एज़ूर कंप्यूट एमुलेटर के तहत एक छोटी सी वेब भूमिका का परीक्षण कर रहा हूं और RoleEntryPoint से प्राप्त मेरी कक्षा में OnStart(), Run() और OnStop() विधियों को ओवरराइड कर दिया है।कैसे Azure Compute Emulator में RoleEntryPoint.OnStop() को कॉल किया गया है?

OnStart() और Run() कहा जाता है लेकिन OnStop() नहीं है - मैं या तो प्रेस "डीबग करना बंद करें" होगा दृश्य स्टूडियो में या ब्राउज़र विंडो बंद और भूमिका समाप्त हो जाएगा, लेकिन OnStop() कभी नहीं कहा जाता है। मैंने चेक किया है - override कीवर्ड OnStop() परिभाषा में मौजूद है।

यह बहुत सुविधाजनक नहीं है - इसका मतलब है कि मैं लाइव क्लाउड के बाहर अपने OnStop() का परीक्षण नहीं कर सकता।

क्या मैं अपनी भूमिका में कंप्यूट एमुलेटर कॉल OnStop() कर सकता हूं?

+0

नवंबर 2012 तक, आपको RoleEnvironment.RequestRecycle() का उपयोग करना होगा; – RickAndMSFT

उत्तर

6

मुझे संदेह है (लेकिन मुझे यकीन नहीं है), कि यदि आप गणना एमुलेटर यूआई खोलते हैं और तैनाती को रोकते हैं, तो ऑनस्टॉप() को कॉल किया जाना चाहिए।

+0

हाँ, यह काम करता है। – sharptooth

+1

यह अब काम नहीं करता है। कॉलिंग RoleEnvironment.RequestRecycle(); काम करता है – RickAndMSFT

+1

जहां तक ​​मैं यह कह सकता हूं कि यह फिर से काम कर रहा है, हालांकि अब एमुलेटर यूआई में विकल्प "सस्पेंड" या "रीस्टार्ट" हैं। – user1454265

1

यदि आप जानबूझकर रन() विधि से बाहर निकलते हैं, तो मेरा मानना ​​है कि ऑनस्टॉप() को कॉल किया जाना चाहिए।

+0

यह काम करता है, लेकिन संपादन कोड की आवश्यकता होती है और इसके बाद भी भूमिका पुन: प्रारंभ नहीं होती है इसके बाद समाप्त नहीं होती है। – sharptooth

2

आप चल रहे तैनाती की कॉन्फ़िगरेशन को अद्यतन करने के लिए csrun का उपयोग कर सकते हैं। जब आप आदेश देते हैं तो इंस्टेंस ऑनसटॉप() विधि को कॉल करेगा। {का मार्ग; {तैनाती आईडी, बस संख्या}:

  • ओपन कमांड लाइन
  • जारी आदेश csrun.exe/अद्यतन के माध्यम से Azure एसडीके बिन फ़ोल्डर:

    ServiceConfigure अद्यतन करने के लिए cscfg फ़ाइल}

मेरी कंप्यूट एम्यूलेटर में यह होगा:

  • csrun.exe/अद्यतन: 252, "डी: \ उपयोग आर \ मेरे दस्तावेज़ \ विजुअल स्टूडियो 2010 \ प्रोजेक्ट्स \ सीएसएम \ सीएससी \ बिन \ डीबग \ ServiceConfiguration.cscfg "