2012-12-21 20 views
26

से सेवा शुरू नहीं कर सकता है मैंने एक विंडोज सेवा बनाई है और इसे सर्वर पर स्थापित किया है। ऐसा लगता है कि यह ठीक काम करता है यानी इसका क्या मतलब है। लेकिन जब मैं दूरस्थ डेस्कटॉप के माध्यम से सर्वर पर लॉग ऑन करता हूं तो मुझे यह संदेश मिलता है:कमांड लाइन या डीबगर

कमांड लाइन या डीबगर से सेवा शुरू नहीं कर सकता। एक विंडोज सेवा को पहले स्थापित किया जाना चाहिए (installutil.exe का उपयोग करके) और फिर सर्वरएक्सप्लोरर, विंडोज सेवा प्रशासनिक उपकरण या नेट स्टार्ट कमांड के साथ शुरू किया जाना चाहिए।

मैं सेवा पर जांच करने के लिए सेवा एक्सप्लोरर पर क्लिक करता हूं और फिर ठीक शुरू करता हूं। कोई त्रुटि रिपोर्ट नहीं की गई।

मैंने इसे स्थापित किया है, इसलिए यह स्थानीय सिस्टम का उपयोग "लॉग ऑन एज़" के रूप में करता है।

धन्यवाद।

+0

को सेट आप सुनिश्चित हैं कि वास्तव में सेवा फेंक त्रुटि संदेश? –

+0

संदेश मेरी खिड़कियां स्थापित करने के बाद ही दिखाई देने लगा और सेवा एक्सएमएल फाइलें पढ़ती है और लगातार चलने की आवश्यकता होती है। क्रिसमस के बाद मैं इसे देख लूंगा क्योंकि जब मैं काम में वापस आ गया हूं। बस अजीब लगता है कि यह तब होता है जब से मैंने अपनी सेवा स्थापित की। लेकिन जैसा कि मैंने कहा है कि यह काम करता है, लेकिन यह नहीं चाहता कि यह संदेश तब दिखाई दे जब उपयोगकर्ता दूरस्थ डेस्कटॉप – Boomerang

+0

के माध्यम से लॉगिन करते हैं [विंडोज सेवा प्रारंभ विफलता] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/5157176/windows-service-start- विफलता) –

उत्तर

37

बदलें Program कक्षा में Main विधि इस प्रकार है:

/// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    private static void Main() 
    { 
     var myService = new MyService(); 
     if (Environment.UserInteractive) 
     { 
      Console.WriteLine("Starting service..."); 
      myService.Start(); 
      Console.WriteLine("Service is running."); 
      Console.WriteLine("Press any key to stop..."); 
      Console.ReadKey(true); 
      Console.WriteLine("Stopping service..."); 
      myService.Stop(); 
      Console.WriteLine("Service stopped."); 
     } 
     else 
     { 
      var servicesToRun = new ServiceBase[] { myService }; 
      ServiceBase.Run(servicesToRun); 
     } 
    } 

आप अपनी सेवा वर्ग के लिए एक Start विधि जोड़ने के लिए:

public void Start() 
    { 
     OnStart(new string[0]); 
    } 

बदलें परियोजना के उत्पादन प्रकार के 'कंसोल प्रोजेक्ट गुणों के 'एप्लिकेशन' टैब में 'विंडोज़ एप्लिकेशन' के बजाए एप्लिकेशन '। अब आप डीबगिंग शुरू करने के लिए केवल F5 दबा सकते हैं लेकिन आप अभी भी एक्जिक्यूटिव को विंडोज सेवा के रूप में चला सकते हैं।

+0

@Tadej क्या आपने पुनर्निर्माण किया? – MattCom

+0

@ मैटकॉम मुझे ऐसा करने का एक और तरीका मिला। लेकिन याद नहीं कर सकता कि वास्तव में क्या था। – JedatKinports

-4

CTRL-ALT-CANC (*) दबाएं, और सेवा टैब पर जाएं। सेवाओं की एक सूची है, जिसकी आपको शुरुआत करने की आवश्यकता है उसे खोजें, इसे चुनें और "प्रारंभ करें" पर क्लिक करें। यदि यह वहां नहीं है, तो शायद यह अनइंस्टॉल किया गया था, नहीं (सही ढंग से?) स्थापित है, या किसी अन्य कारण से आपकी सेवा विंडोज द्वारा ज्ञात नहीं है। कीबोर्ड भाषा के आधार पर

(*) या CTRL-ALT-DEL (ete) या अन्य।

+0

कैंक? क्या वह हटा है? – Moira

+0

धन्यवाद, मैंने स्पष्टीकरण के साथ एक (*) जोड़ा। मुझे नहीं लगता था कि यह कीबोर्ड द्वारा निर्भर करता है। – fresko

-4

गोटो App.config

खोजें

<setting name="RunAsWindowsService" serializeAs="String"> 
<value>True</value> 

झूठी