निम्न लिंक में से एक, सी # कोड का उपयोग कर एक सेवा रोक सकता है, शुरू कर सकता है, और "रोक सकता है, फिर शुरू करें"।.NET कोड से .NET विंडोज सेवा में कस्टम कमांड कैसे भेजें?
http://www.csharp-examples.net/restart-windows-service/
मैं एक नेट सेवा OnStart
और OnStop
को लागू करता है कि पके हुए है। हालांकि, मुझे एक "स्मार्ट पुनरारंभ" कार्यक्षमता को लागू करने की आवश्यकता है जो केवल रोकने और फिर शुरू करने से अधिक शामिल है। मुझे डाउनटाइम को केवल कुछ सेकंड तक रखना होगा यदि (लेकिन स्टॉप + स्टार्ट साफ-सफाई के दौरान इस मामले में मिनट ले सकता है, और मुझे इसे साफ करना होगा), और सिस्टम के कुछ हिस्सों को उपलब्ध कराने के दौरान अन्य लोग रिबूट/रीफ्रेश कर रहे हैं ।
लंबी कहानी छोटी - इससे पहले कि मैं इस OnSmartRestart
कार्यक्षमता को लागू करने में कूदूं, मैं यह सुनिश्चित करना चाहता हूं कि इस कॉल को किसी अन्य C# एप्लिकेशन से आमंत्रित करने का एक आसान तरीका है।
यह सुविधा महत्वपूर्ण है, लेकिन खतरनाक है। मैं इसे काफी हद तक छिपाना चाहता हूं, कुछ हद तक सुरक्षित, इसे सरल भी रखता हूं, और यह सुनिश्चित करता हूं कि यह मेरे विंडोज़ सेवा के प्रदर्शन पर नगण्य प्रभाव डालता है, जबकि यह अपने नियमित काम कर रहा है और रिबूट नहीं कर रहा है।
अगर मुझे कुछ फाइल के लिए मतदान करना है या बंदरगाह खोलना है और ऐसा करने पर बहुत अधिक CPU खर्च करना है, तो यह एक अच्छा समाधान नहीं होगा। मैं इसे यथासंभव सरल रखना चाहता हूं (पुनरावृत्ति के लिए खेद है)।
कुछ अतिरिक्त जानकारी: DOS SC.exe कमांड इन आदेशों को भी भेज सकता है, सुरक्षा अनुमतियों की अनुमति ... उदा। 'एससी नियंत्रण YOURSERVICENAME 200' – Adrian
एड्रियन, यदि आपकी विधि एक विकल्प है, तो इसे सामान्यतः कमांड का उपयोग कैसे कहा जाता है? उपरोक्त स्रोत कोड में 222 के समान आपके आदेश में "200" है? – MacGyver
ध्यान दें कि इसके लिए एक सामान्य सर्वर वातावरण में विशेष अनुमतियों की आवश्यकता है जहां आपका .NET ऐप/साइट अपने आप पर सीमित अनुमति उपयोगकर्ता चल रहा है। आप इस विधि का उपयोग कर इस सेवा को केवल एक ही सेवा में कस्टम आदेश भेजने की अनुमति देकर हल कर सकते हैं: http://i.imgur.com/tql3pUA.png http://superuser.com/a/315709/101698 –