स्रोत नहीं मिला, लेकिन कुछ या सभी ईवेंट लॉग नहीं खोजे जा सके


125

मुझे निम्नलिखित अपवाद मिल रहे हैं। मैंने रजिस्ट्री संपादन में Eventlogs पर Asp.net खाते पर पूर्ण नियंत्रण दिया है।

[SecurityException: स्रोत नहीं मिला था, लेकिन कुछ या सभी ईवेंट लॉग नहीं खोजे जा सके। दुर्गम लॉग: सुरक्षा।]

System.Diagnostics.EventLog.FindSourceRegistration(String source,  String machineName, Boolean readOnly, Boolean wantToCreate) +664
System.Diagnostics.EventLog.SourceExists(String source, String machineName, Boolean wantToCreate) +109
System.Diagnostics.EventLog.SourceExists(String source) +14 Microsoft.ApplicationBlocks.ExceptionManagement.DefaultPublisher.VerifyValidSource() +41

मुझे लगता है कि यह सर्वर पर कुछ कॉन्फ़िगरेशन समस्या के कारण है?



मैंने अपना उत्तर पोस्ट किया और मॉडरेटर ने इसे हटा दिया। कृपया अपनी सेवा को स्थानीय प्रणाली के रूप में चलाना सुनिश्चित करें लेकिन अन्य नहीं क्योंकि स्थानीय प्रणाली केवल ईवेंट लॉग और स्रोत बना सकती है। मैं अपनी सेवा को नेटवर्क सेवा के रूप में चला रहा था और मुझे यह अपवाद मिला। बाद में मैंने सेवा बंद कर दी और स्थानीय प्रणाली के रूप में पुनः आरंभ किया और इसने ठीक काम किया और उसके बाद मैंने नेटवर्क सेवा के रूप में अपनी सेवा को रोक दिया और पुनः आरंभ किया और इसने ठीक काम किया।
जिगलर

जवाबों:


105

EventLog.SourceExistsHKLM\SYSTEM\CurrentControlSet\services\eventlogयह देखने के लिए उपकुंजियों के माध्यम से गणना करता है कि इसमें निर्दिष्ट नाम के साथ उपकुंजी है या नहीं। यदि वह उपयोगकर्ता खाता जिसके अंतर्गत कोड चल रहा है, तो उपकुंजी तक पहुँच नहीं पढ़ता है जिसे वह Securityलक्ष्य स्रोत को खोजने से पहले (आपके मामले में, उपकुंजी) तक पहुँचने का प्रयास करता है , तो आपको एक अपवाद दिखाई देगा जैसा आपने वर्णित किया है।

इस तरह के मुद्दों से निपटने के लिए सामान्य दृष्टिकोण इंस्टॉलेशन समय (एक व्यवस्थापक खाते के तहत) में इवेंट लॉग स्रोतों को पंजीकृत करना है , फिर मान लें कि वे रनटाइम पर मौजूद हैं, किसी भी परिणामी अपवाद को अनपेक्षित रूप से व्यवहार करने की अनुमति देता है यदि लक्ष्य ईवेंट लॉग स्रोत वास्तव में मौजूद नहीं है चलने के समय पर।


26
विंडोज 8 पर, ऐसा लगता है कि जब UAC अक्षम हो और उपयोगकर्ता प्रशासक हो, तब भी VS को व्यवस्थापक के रूप में चलाना आवश्यक है। मेरे मामले पर इसका समाधान है
जून'१३

2
मेरे लिए, यह केवल पहली बार प्रशासक के रूप में आवेदन को चलाने के लिए पर्याप्त था। उसके बाद, इवेंट स्रोत बनाया गया था और एप्लिकेशन ने ठीक काम किया।
thomaskonrad

2
यह एक उदाहरण है कि विंडोज़ ओएस में एम्बेडेड उपकरणों का उपयोग करके कैसे हतोत्साहित करता है
फेलिस पोलानो

67

एक ही अपवाद था। मेरे मामले में, मुझे प्रशासक अधिकारों के साथ कमांड प्रॉम्प्ट चलाना था।

स्टार्ट मेन्यू से, कमांड प्रॉम्प्ट पर राइट क्लिक करें, "Run as एडमिनिस्ट्रेटर" चुनें।


2
मेरा स्थिति दृश्य स्टूडियो 2015 को व्यवस्थापक के रूप में चलाने के लिए है। (एक वेब एपीआई परियोजना कर रहा है।)
केविन .NET

9

मेरे लिए यह त्रुटि कमांड प्रॉम्प्ट के कारण थी, जो व्यवस्थापक विशेषाधिकारों के तहत नहीं चल रही थी। आपको कमांड प्रॉम्प्ट पर राइट क्लिक करने की आवश्यकता है और " व्यवस्थापक के रूप में चलाएं " कहें ।

किसी सेवा को स्थापित या अनइंस्टॉल करने के लिए आपको व्यवस्थापक भूमिका की आवश्यकता होती है।


मैं लगभग 2 घंटे के लिए लड़खड़ा रहा था, धन्यवाद दोस्त!
मोक्स शाह

8

डेवलपर कमांड लाइन "एक प्रशासक के रूप में" लॉन्च करें। इस खाते की सुरक्षा लॉग तक पूरी पहुंच है


6

मेरे लिए काम नहीं किया।

मैंने एक नई कुंजी और स्ट्रिंग मान बनाया और इसे काम में लाने में कामयाब रहा

Key= HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\<Your app name>\
String EventMessageFile value=C:\Windows\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll

मैने भी वही कीया। मैंने अभी अपने नाम के अंदर स्रोत नाम के साथ एक नई कुंजी बनाई है जो मैं अपने एप्लिकेशन के अंदर उपयोग कर रहा हूं और यह काम कर रहा है।
कैम्पिन्हो


1

दुर्गम लॉग: सुरक्षा

एक नए ईवेंट स्रोत को सुरक्षा सहित सभी लॉग्स में एक विशिष्ट नाम होना चाहिए (जिसे पढ़ने के दौरान व्यवस्थापक विशेषाधिकार की आवश्यकता होती है)।

तो स्रोत बनाने के लिए आपके ऐप को व्यवस्थापक विशेषाधिकार की आवश्यकता होगी । लेकिन यह शायद एक overkill है।

मैंने इस शक्तियुक्त पटकथा को घटना स्रोत को वसीयत में बनाने के लिए लिखा था । इसे सहेजें *.ps1और इसे किसी भी विशेषाधिकार के साथ चलाएं और यह स्वयं को ऊपर उठाएगा।

# CHECK OR RUN AS ADMIN

If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{   
    $arguments = "& '" + $myinvocation.mycommand.definition + "'"
    Start-Process powershell -Verb runAs -ArgumentList $arguments
    Break
}

# CHECK FOR EXISTENCE OR CREATE

$source = "My Service Event Source";
$logname = "Application";

if ([System.Diagnostics.EventLog]::SourceExists($source) -eq $false) {
    [System.Diagnostics.EventLog]::CreateEventSource($source, $logname);
    Write-Host $source -f white -nonewline; Write-Host " successfully added." -f green;
}
else
{
    Write-Host $source -f white -nonewline; Write-Host " already exists.";
}

# DONE

Write-Host -NoNewLine 'Press any key to continue...';
$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown');

1

मैंने हाल ही में त्रुटि का अनुभव किया, और मेरे लिए कोई भी समाधान काम नहीं किया। कंप्यूटर प्रबंधन में पॉवर उपयोगकर्ता समूह के लिए अनुप्रयोग पूल उपयोगकर्ता को जोड़ने से मेरे लिए जो त्रुटि हल हुई थी। मैं कंपनी नीति के कारण व्यवस्थापक समूह का उपयोग नहीं कर सका।


0

यदि आप IIS (स्रोत कोड, वेबपीआई से नहीं) पर SenseNet TaskManagement वेबसाइट की एक नई स्थापना कर रहे हैं, तो आपको यह संदेश मिलेगा, आमतौर पर सिग्नलआर संचार से संबंधित। जैसा कि @ nicole-caliniou बताते हैं, यह रजिस्ट्री में एक महत्वपूर्ण खोज के कारण है जो विफल हो जाती है।

SenseNet TaskManagement v1.1.0 के लिए इसे हल करने के लिए, पहले web.config फ़ाइल में रजिस्ट्री कुंजी नाम ढूंढें। डिफ़ॉल्ट रूप से यह "SnTaskWeb" है।

 <appSettings>
   <add key="LogSourceName" value="SnTaskWeb" />

रजिस्ट्री संपादक खोलें regedit.exe, और नेविगेट करें HKLM\SYSTEM\CurrentControlSet\Services\EventLog\SnTask। SnTask पर राइट-क्लिक करें New Keyऔर SnTaskWebऊपर दिखाए गए कॉन्फ़िगरेशन के लिए कुंजी का नाम और चयन करें । फिर SnTaskWebतत्व पर राइट-क्लिक करें और चुनें New Expandable String Value। नाम होना चाहिए EventMessageFileऔर मूल्य डेटा होना चाहिए C:\Windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll

कीवर्ड: सिग्नल, सेंसनेट, regedit, अनुमतियाँ


0

यदि आप बस सूँघना चाहते हैं यदि कोई स्रोत स्थानीय मशीन पर मौजूद है, लेकिन ऐसा करने के लिए प्राधिकरण प्राप्त करने की क्षमता नहीं है, तो आप इसे निम्न उदाहरण (VB) के माध्यम से उंगली कर सकते हैं।

यह सुरक्षा त्रुटि को बायपास करता है। आप स्रोत के लिए LogName वापस करने के लिए इस फ़ंक्शन को समान रूप से संशोधित कर सकते हैं।

Public Shared Function eventLogSourceExists(sSource as String) as Boolean
    Try
        EventLog.LogNameFromSourceName(sSource, ".")
        Return True
    Catch
        Return False
    End Try
End Function
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.