2010-11-23 6 views
7

मैं अपने खिड़कियों सेवा आवेदन में एक कस्टम ईवेंट लॉग बनाने के लिए निम्नलिखित कोड का उपयोग कर रहा:इवेंट लॉग पर लिखते समय त्रुटि, विंडोज सेवा को शुरू करने से रोकती है?

public ServiceConstructor() 
{ 
    InitializeComponent(); 
    if (!EventLog.SourceExists("WinService")) 
    { 
    EventLog.CreateEventSource("WinService", "WinServiceLog"); 
    eventLog1.Source = "WinService"; 
    eventLog1.Log = "WinServiceLog"; 
    } 
} 
protected override void OnStart(string[] args) 
{ 
eventLog1.WriteEntry("Started"); 
} 

, service.msi स्थापित करने जब मैं सेवा इसे शुरू किया शुरू किया और फिर stoped के बाद। तब मैंने पाया EventViewer खिड़कियों में निम्न त्रुटि लॉग इन करें अनुभाग:

सेवा प्रारंभ नहीं किया जा सकता है। सिस्टम। ऑर्ग्यूमेंट अपवाद: इवेंट लॉग में लिखने से पहले स्रोत प्रॉपर्टी सेट नहीं की गई थी।

at System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData) at System.Diagnostics.EventLog.WriteEntry(String message) at WinService.Service.OnStart(String[] args) at System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)

उत्तर

6

यदि स्रोत पहले से मौजूद है तो ऐसा लगता है कि आप eventLog1.Source प्रारंभ नहीं करते हैं।

सुझाव है कि आप प्रारंभिक कोड ऑनस्टार्ट और कन्स्ट्रक्टर से बाहर ले जाएं।

और अगर बयान से बाहर इन दो पंक्तियों के लिए कदम:

eventLog1.Source = "WinService"; 
eventLog1.Log = "WinServiceLog"; 
4

प्रयास करें निम्नलिखित:

EventLog.CreateEventSource("WinService", "Application");
और eventLog1.Log = "Application";

इसके अलावा onStart में निम्नलिखित डाल:

eventLog1.Log="Application"
eventLog1.Source = "WinService";