मैं विंडोज प्लेटफार्मों पर .NET का उपयोग कर एक सेवा विकसित कर रहा हूं।सेवा नियंत्रण फ़ंक्शन का जवाब नहीं दे रही है (त्रुटि 2186)
यह कल तक काम करता था ... लेकिन आज यह शुरू नहीं करना चाहता !!! यह अजीब लगता है, और मुझे लगता है कि मैं कुछ याद कर रहा हूँ महसूस ...
मैं भी अंतिम कार्य संस्करण के लिए सूत्रों का कहना है वापस लौटने की कोशिश की है, लेकिन कुछ नहीं होता है: शुद्ध शुरू आउटपुट:
सेवा नियंत्रण समारोह का जवाब नहीं दे रही है।
इस खराबी का कारण क्या हो सकता है?
शायद आप में से अधिकांश इसके बारे में और जानना चाहते हैं। तो, मैं आपको कुछ कोड दिखाते हैं:
सेवा कोड:
#if DEBUG
class iGeckoService : DebuggableService
#else
class iGeckoService : ServiceBase
#endif
{
static void Main()
{
#if DEBUG
if (Debugger.IsAttached == true) {
DebuggableService[] services = Services;
// Create console
AllocConsole();
// Emulate ServiceBase.Run
foreach (DebuggableService service in services)
service.Start(null);
// Wait for new line
Console.WriteLine("Press ENTER to exit..."); Console.ReadLine();
// Emulate ServiceBase.Run
foreach (DebuggableService service in services)
service.Stop();
} else
ServiceBase.Run(Services);
#else
ServiceBase.Run(Services);
#endif
}
#if DEBUG
static DebuggableService[] Services
{
get {
return (new DebuggableService[] { new iGeckoService() });
}
}
[DllImport("kernel32")]
static extern bool AllocConsole();
#else
static DebuggableService[] Services
{
get {
return (new ServiceBase[] { new iGeckoService() });
}
}
#endif
#endregion
#region Constructors
/// <summary>
/// Default constructor.
/// </summary>
public iGeckoService()
{
// Base properties
ServiceName = DefaultServiceName;
// Service feature - Power events
}
#endregion
protected override void OnStart(string[] args)
{
try {
...
} catch (Exception e) {
sLog.Error("Unable to initialize the service. Request to stop.", e);
}
}
/// <summary>
/// Stop this service.
/// </summary>
protected override void OnStop()
{
...
}
}
[RunInstaller(true)]
public class iGeckoDaemonInstaller : Installer
{
/// <summary>
/// Default constructor.
/// </summary>
public iGeckoDaemonInstaller()
{
ServiceProcessInstaller spi = new ServiceProcessInstaller();
spi.Account = ServiceAccount.LocalSystem;
ServiceInstaller si = new ServiceInstaller();
si.ServiceName = iGeckoService.DefaultServiceName;
si.StartType = ServiceStartMode.Automatic;
Installers.AddRange(new Installer[] {spi, si});
}
}
class DebuggableService : ServiceBase
{
public void Start(string[] args) { OnStart(args); }
}
शुरू स्क्रिप्ट है:
installutil ..\bin\Debug\iGeckoService.exe
net start "Gecko Videowall"
जबकि बंद स्क्रिप्ट है:
net stop "Gecko Videowall"
installutil /u ..\bin\Debug\iGeckoService.exe
हालांकि, मुझे लगता है कि यह एक सिस्टम सेटिंग है, क्योंकि टी वह आवेदन पिछले दिन तक अच्छी तरह से काम किया है। (साँस)।
अद्यतन
जब सेवा काम कर रहा था, मैं लॉगिंग सेवा गतिविधि (मैं चल रहा है सेवा करने के लिए डिबगर संलग्न करने में असमर्थ हूँ ...), और यह हमेशा के लिए लॉग इन किया है log4net इस्तेमाल किया ।
अब से, लॉग 4नेट लॉग यह कभी नहीं बनाया गया है (भले ही मैं आंतरिक डीबग विकल्प सक्षम करता हूं), भले ही मैं मुख्य दिनचर्या पर लॉग इन करता हूं!
कोई अन्य अपडेट
ऐसा लगता है कि आवेदन निष्पादित कभी नहीं किया गया है। मैंने हर दिनचर्या (मुख्य, ऑनस्टार्ट, ऑनस्टॉप) को कम कर दिया है, और मैं एक खाली सेवा चलाता हूं। ऑनस्टार्ट दिनचर्या एक निर्देशिका पर एक फ़ाइल बनाता है (सभी द्वारा पूरी तरह से लिखने योग्य), लेकिन जब सेवा शुरू हो जाती है, तो कोई फ़ाइल नहीं बनाई जाती है।
फिर भी एक और अद्यतन
रोब की टिप्पणी से प्रेरित, मैं घटना दर्शक पर इस संदेश को देखा है:
> Faulting application name: iGeckoService.exe, version: 1.0.0.0, time stamp: 0x4c60de6a
> Faulting module name: ntdll.dll, version: 6.1.7600.16385, time stamp: 0x4a5be02b
> Exception code: 0x80000003
> Fault offset: 0x000000000004f190
> Faulting process id: 0x1258
> Faulting application start time: 0x01cb384a726c7167
> Faulting application path: C:\Users\Luca\Documents\Projects\iGeckoSvn\iGeckoService\bin\Debug\iGeckoService.exe
> Faulting module path: C:\Windows\SYSTEM32\ntdll.dll
> Report Id: b096a237-a43d-11df-afc4-001e8c414537
यह, निश्चित, सेवा पर कारण है शटडाउन ... सवाल नहीं बनता है: "इसे कैसे डिबग करें?" (धन्यवाद रॉब, मैंने कभी भी ईवेंट व्यूअर के बारे में कभी सोचा नहीं है!) इसे कंसोल एप्लिकेशन के रूप में चलाने में डिबग करना यह कोई त्रुटि नहीं दिखाता है, वास्तव में यह सेवा वातावरण से संबंधित प्रतीत होता है। मेरे दिमाग में आने वाली एकमात्र चीज कुछ डीएलएल लोडिंग विफलता हो सकती है, क्योंकि अब सेवा खाली है ... कोई विचार?
हल (आप सभी मेरा पीछा करने के लिए धन्यवाद ... मैं आप पिज्जा & बियर पेशकश करना चाहते हैं)!
सेवा एमएस एप्लीकेशन सत्यापनकर्ता (x64) की स्थापना और सेटअप के कारण मुख्य दिनचर्या से पहले दुर्घटना के बाद से शुरू करने में असमर्थ थी। उस एप्लिकेशन को अनइंस्टॉल करने के बाद, सबकुछ सामान्य रूप से काम करता था!
सभी को धन्यवाद!
क्या आप अपनी सेवा निष्पादित करने का प्रयास करते समय ईवेंट लॉग में लॉग इन हैं? – Rob
हां। स्टार्टअप पर सेवा दुर्घटना। अभी भी सोच रहा है कि क्यों, प्रत्येक कार्य संस्करण वर्णित के रूप में दुर्घटनाग्रस्त है। – Luca