इसलिए हमने अपने क्लाइंट एप्लिकेशन को डेटा खिलाने के लिए एक विंडोज़ सेवा का उत्पादन किया है और सब कुछ बहुत अच्छा चल रहा है। क्लाइंट एक मजेदार कॉन्फ़िगरेशन अनुरोध के साथ आया है, जिसे एक ही सर्वर पर चलने वाली इस सेवा के दो उदाहरणों की आवश्यकता होती है और अलग-अलग डेटाबेस पर इंगित करने के लिए कॉन्फ़िगर किया गया है।
अब तक मैं ऐसा करने में सक्षम नहीं हो पाया था और उम्मीद कर रहा था कि मेरे साथी स्टैकओवरफ्लो सदस्य कुछ संकेत देने में सक्षम हो सकते हैं क्यों।
मौजूदा सेटअप:
मैंने वह परियोजना स्थापित की है जिसमें विंडोज़ सेवा शामिल है, हम इसे अभी से AppService कहेंगे, और ProjectInstaller.cs फ़ाइल जो App.config में एक कुंजी के आधार पर सेवा का नाम सेट करने के लिए कस्टम इंस्टॉलेशन चरणों को संभालती है। :
this.serviceInstaller1.ServiceName = Util.ServiceName;
this.serviceInstaller1.DisplayName = Util.ServiceName;
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
इस मामले में Util सिर्फ एक स्थिर वर्ग था जो विन्यास फाइल से सेवा का नाम लेता है।
यहां से आगे मैंने दोनों सेवाओं को स्थापित करने के लिए दो अलग-अलग तरीकों की कोशिश की है और दोनों एक समान तरीके से विफल रहे हैं।
पहला तरीका केवल सेवा की पहली प्रति स्थापित करना था, स्थापित निर्देशिका की प्रतिलिपि बनाना और उसका नाम बदला, और फिर वांछित सेवा का नाम बदलने के लिए एप्लिकेशन कॉन्फिगर को संशोधित करने के बाद निम्नलिखित कमांड को चलाया:
InstallUtil.exe /i AppService.exe
जब मैंने काम नहीं किया तो मैंने दूसरी इंस्टॉलर परियोजना बनाने की कोशिश की, कॉन्फिग फाइल को एडिट किया और दूसरा इंस्टॉलर बनाया। जब मैंने इंस्टॉलर को चलाया तो यह ठीक काम कर रहा था, लेकिन सर्विस ने सर्विस.एमएससी में नहीं दिखाया इसलिए मैंने दूसरी स्थापित कोड बेस के खिलाफ पिछले कमांड को चलाया।
दोनों बार मुझे इंस्टाल यूटिल (केवल प्रासंगिक हिस्से) से निम्न आउटपुट प्राप्त हुए:
एक संस्थापित संस्थापन चल रहा है।
स्थापना के चरण को शुरू करना।
सेवा ऐप सेवा दो को स्थापित कर रहा है ... सेवा ऐप सेवा दो को सफलतापूर्वक स्थापित किया गया है। EventLog स्रोत ऐप सेवा दो लॉग एप्लीकेशन में बना रहा है ...
इंस्टॉल चरण के दौरान एक अपवाद हुआ। System.NullReferenceException: ऑब्जेक्ट संदर्भ किसी ऑब्जेक्ट की आवृत्ति पर सेट नहीं है।
स्थापना का रोलबैक चरण शुरू हो रहा है।
स्रोत ऐप सेवा दो के लिए पिछली स्थिति में रिस्टोरिंग इवेंट लॉग। सेवा ऐप सेवा दो को सिस्टम से हटाया जा रहा है ... सेवा ऐप सेवा दो को सफलतापूर्वक सिस्टम से हटा दिया गया था।
रोलबैक चरण सफलतापूर्वक पूरा हुआ।
लेन-देन स्थापित पूरा हो गया है। स्थापना विफल रही, और रोलबैक प्रदर्शन किया गया है।
लंबी घुमावदार पोस्ट के लिए क्षमा करें, यह सुनिश्चित करना चाहते हैं कि पर्याप्त प्रासंगिक जानकारी हो। अब तक मुझे जो टुकड़ा मिला है, वह यह है कि यह बताता है कि सेवा की स्थापना सफलतापूर्वक पूर्ण हो गई है और इसके बाद ही यह EventLog स्रोत बनाने के लिए जाता है कि NullReferenceException को फेंक दिया गया लगता है। तो अगर किसी को पता है कि मैं क्या गलत कर रहा हूं या एक बेहतर दृष्टिकोण है तो यह बहुत सराहना की जाएगी।
http://journalofasoftwaredev.wordpress.com/2008/07/16/multiple-instances-of-same-windows-service/
। इंस्टॉलर का सेवा नाम पाने के लिए आप इंस्टॉलर में कोड डाल सकते हैं।