2009-04-27 22 views
12

के साथ विफल रहता है मेरे पास एक विंडोज सेवा है जो शुरू करने में विफल रही है, त्रुटि दे रही है "त्रुटि 1053: सेवा ने समय-समय पर प्रारंभ या नियंत्रण अनुरोध का जवाब नहीं दिया"।एक विंडोज़ सेवा शुरू करना त्रुटि 1053

मेरे डीबगर में सेवा चलाना ठीक काम करता है, और यदि मैं रिमोट मशीन पर सेवा .exe पर डबल क्लिक करता हूं तो एक कंसोल विंडो पॉप अप हो जाती है और बिना किसी समस्या के चलती रहती है - मैं लॉग संदेश भी देख सकता हूं कि मुझे दिखा रहा है कि कार्यक्रम सब कुछ संसाधित कर रहा है जिस तरह से होना चाहिए।

सेवा पहले ठीक चल रही थी, हालांकि यह मेरा पहला समय है, व्यक्तिगत रूप से, कार्यक्रम में किए गए हालिया परिवर्तनों के साथ इसे तैनात करने की कोशिश कर रहा है। मैंने उन परिवर्तनों का मूल्यांकन किया है और यह पता नहीं लगा सकते कि वे इस समस्या का कारण कैसे बन सकते हैं, क्योंकि कथित रूप से सेवा के रूप में शुरू नहीं होने पर सब ठीक हो जाता है।

सेवा प्रत्यारोपण की StartRoutine() विधि खाली है, इसलिए "समय पर फैशन" में लौटना चाहिए।

मैंने कंप्यूटर पर ईवेंट लॉग की जांच की है, और यह 30 सेकंड आवश्यक समय सीमा में सेवा से वापस नहीं सुना है इसके अलावा कोई अतिरिक्त जानकारी नहीं देता है।

चूंकि यह मेरी मशीन पर काम करता है, और डबल-क्लिक निष्पादन योग्य के रूप में, मैं यह समझने के लिए कैसे जाउंगा कि यह सेवा के रूप में क्यों विफल रहता है?

ओह, और यह, .NET 2.0 है, इसलिए इसमें 1.1 ढांचे बग है कि इस लक्षण प्रदर्शित से प्रभावित नहीं किया जाना चाहिए (http://support.microsoft.com/kb/839174)

बॉक्स एक Windows Server 2003 R2 मशीन SP2 चल रहा है।

+1

केवल एक सर्वर पर .NET 4.0 संकलित सेवा शुरू करने का प्रयास करते समय यह त्रुटि प्राप्त हुई। नेट 2.0 स्थापित – Hovland

उत्तर

4

कई चीजें हो सकती हैं और इससे समस्या का प्रदर्शन करने वाली मशीन पर स्टैक ट्रेस प्राप्त करने में मदद मिल सकती है। ऐसा करने के कई तरीके हैं लेकिन बिंदु यह है कि आपको यह देखना होगा कि यह कोड में कहां विफल रहा है।

आप इसे remote debugging के साथ कर सकते हैं, लेकिन एक साधारण बात यह है कि केवल ईवेंट लॉगर पर लॉग इन करें, या फ़ाइल लॉग अगर आपके पास है। सचमुच, कोड के पूरे हिस्सों में "लिखित रेखा" ("कक्षा :: फ़ंक्शन()" पर) यह देखने के लिए कि आपने इसे वहां बनाया है या नहीं।

यह कम से कम आपको सही दिशा में देखेगा (जो अंत में है कोड)

अद्यतन:।।

माइक्रोसॉफ्ट के देखें WinDbg का उपयोग कर समस्या निवारण स्टार्टअप समस्याओं में जानकारी के लिए How to Debug Windows Services लेख

यह related question विवरण डिबग सेवाओं है कि नेट में लिखे गए हैं के लिए अच्छा तरीके

1

मैं स्कॉट के साथ सहमत हूं, यह पता लगाने का सबसे आसान तरीका है कि क्या हो रहा है स्टार्ट-अप कोड में कुछ निशान डालना है (शायद यह आपके स्टार्ट-अप कोड पर भी नहीं आती है)।

यदि यह मदद नहीं करता है, तो आप यहां अपना कोड पोस्ट कर सकते हैं ताकि अन्य लोग देख सकें।

1

शायद कुछ निर्भरता की कमी है, इस प्रयास करें:
- रजिस्टर फिर

तो रजिस्टर का मतलब है कि एक मॉड्यूल की कमी पर विफल - आपकी सेवा
अपंजीकृत कर दे।

1

यदि स्टार्टराउटिन खाली है, तो आप शायद इसे कहीं और शुरू कर रहे हैं।

आईआईआरसी आपको एक कार्यकर्ता धागे को आग लगाना होगा, और फिर StartRoutine से वापस लौटना होगा।

+0

ऐसा लगता है कि कोडबेस को हुक करके कोड निष्पादित किया गया है। इलस्पेड इवेंट, जो कि कन्स्ट्रक्टर में लगा हुआ है (यह था यह पहले भी कर रहा था, जब यह काम कर रहा था) – Matt

-2

एक अन्य कारण यह है कि यदि आप डीएलएल को 'डीबग' मोड में इंस्टॉलेशन फ़ोल्डर में कॉपी करते हैं तो यह समस्या आ जाएगी। आपको क्या करना है, 'रिलीज' मोड में प्रोजेक्ट चलाएं डीएलएल की प्रतिलिपि बनाएँ या सीधे रिलीज फ़ोल्डर बनाएं डीबग फ़ोल्डर, और उस DLL को इंस्टॉलेशन फ़ोल्डर में कॉपी करें, यह काम करेगा। आप डीएलएल के आकार में कमी देख सकते हैं, इसमें कोई डीबग प्रतीक नहीं होगा और

5

यह एक भ्रामक त्रुटि है। यह शायद एक unhandled अपवाद है।

खाली अपने onStart() हैंडलर फिर अपने निर्माता में इस कोशिश ...

public MainService() 
    { 
     InitializeComponent(); 

     try 
     { 
      // All your initialization code goes here. 

      // For instance, my exception was caused by the lack of registry permissions 
      ; 
     } 
     catch (Exception ex) 
     { 
      EventLog.WriteEntry("Application", ex.ToString(), EventLogEntryType.Error); 
     } 
    } 

अब आप अपने अनुप्रयोग त्रुटि के लिए अपने सिस्टम पर इवेंटलॉग की जाँच करें।

1

इस समस्या का कारण बनने वाली समस्याओं में से एक यह है कि यदि विंडोज सेवा को तैनात करने की आवश्यकता है तो कुछ त्रुटि होती है यानी यह सरल प्रमाणीकरण त्रुटि या मेरे मामले में कुछ भी हो सकता है, मैंने कुछ फ़ोल्डर्स और लॉगिंग के लिए फाइलों का संदर्भ दिया है मौजूदा नहीं थे, लेकिन जब उन फाइलों और फ़ोल्डरों का सही मार्ग प्रदान किया गया तो यह मेरी समस्या का हल हो गया।

0

मैं इस विशेष विषय पर प्रत्येक पोस्ट के माध्यम से भाग गया और किसी भी प्रतिक्रिया ने समस्या हल नहीं की, इसलिए अगर मैं किसी और की मदद करता हूं तो मैं यह प्रतिक्रिया जोड़ रहा हूं। माना जाता है कि यह केवल एक नई सेवा पर लागू होता है, न कि इस विशिष्ट मामले में।

मैं एक फ़ाइल सुनवाई सेवा लिख ​​रहा था। एक कंसोल ऐप के रूप में, यह पूरी तरह से काम किया। जब मैं इसे एक सेवा के रूप में चलाता हूं, तो मुझे उपरोक्त त्रुटि मिलती है। जो मुझे नहीं पता था (और सेवाओं के बारे में एमएसडीएन लेखों में से कई आसानी से बाहर निकलते हैं) यह है कि आपको अपनी कक्षा को ServiceBase.Run (YourClassName()) में से निष्पादित करने की आवश्यकता है; अन्यथा, आपका ऐप निष्पादित हो जाता है और तुरंत समाप्त हो जाता है और क्योंकि इसे समाप्त कर दिया जाता है, तो आपको कोई त्रुटि या अपवाद होने पर भी त्रुटि मिलती है। यहां इस बारे में एक लेख का एक लिंक है। यह वास्तव में दोहरी उपयोग के लिए आपके ऐप को स्थापित करने पर चर्चा करता है - कंसोल ऐप और सेवा: Create a combo command line/Windows service app

0

मुझे यह समस्या थी और मेरी समस्या का स्रोत कॉन्फ़िगर फ़ाइल था। मैंने इसे नोटपैड में संपादित किया और नोटपैड ने एक विशेष चरित्र जोड़ा जो सेवा को ठीक से चलाने के लिए कारण नहीं है क्योंकि कॉन्फ़िगरेशन फ़ाइल बर्बाद हो गई थी। मैंने उस विशेष चरित्र को नोटपैड ++ में देखा और इसे हटाने के बाद, सेवा सफलतापूर्वक चलाने के लिए शुरू हुई।

0

मेरे मामले में, सर्वर पर सही .NET ढांचा स्थापित नहीं किया गया था कि मैं विंडोज सेवा स्थापित कर रहा था।

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