System.Security.SecurityException इवेंट लॉग में लिखते समय


189

मैं सर्वर 2003 (और IIS6) से ASP.NET ऐप को सर्वर 2008 (IIS7) में पोर्ट करने की कोशिश कर रहा हूं।

जब मैं उस ब्राउज़र पर पृष्ठ पर जाने की कोशिश करता हूं और उसे प्राप्त करता हूं:

/ 'अनुप्रयोग में सर्वर त्रुटि

सुरक्षा अपवाद

विवरण: अनुप्रयोग ने सुरक्षा नीति द्वारा अनुमत नहीं एक ऑपरेशन करने का प्रयास किया। इस एप्लिकेशन को आवश्यक अनुमति देने के लिए कृपया अपने सिस्टम व्यवस्थापक से संपर्क करें या कॉन्फ़िगरेशन फ़ाइल में एप्लिकेशन के विश्वास स्तर को बदलें।

अपवाद विवरण: System.Security.SecurityException: स्रोत नहीं मिला, लेकिन कुछ या सभी ईवेंट लॉग नहीं खोजा जा सका। दुर्गम लॉग: सुरक्षा

स्रोत त्रुटि:

वर्तमान वेब अनुरोध के निष्पादन के दौरान एक अखंडित अपवाद उत्पन्न हुआ था। नीचे दिए गए स्टैक ट्रेस का उपयोग करके उत्पत्ति और अपवाद के स्थान के बारे में जानकारी की पहचान की जा सकती है।

स्टैक ट्रेस:

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

System.Diagnostics.EventLog.FindSourceRegistration (स्ट्रिंग स्रोत, स्ट्रिंग मशीन का नाम, बूलियन आसानी से पढ़े) +562 System.Diagnostics.EventLog.SourceExists (स्ट्रिंग स्रोत, स्ट्रिंग मशीन नाम) +251

[स्निप]

ये वे चीजें हैं जिन्हें मैंने आजमाने और हल करने के लिए किया है:

  1. कुंजी के लिए "हर कोई" पूर्ण पहुंच की अनुमति दें HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Security। यह काम किया। लेकिन स्वाभाविक रूप से मैं उत्पादन में ऐसा नहीं कर सकता। इसलिए मैंने कुछ मिनटों के लिए ऐप चलाने के बाद "सभी" अनुमति को हटा दिया और त्रुटि फिर से दिखाई दी।

  2. मैंने एप्लिकेशन लॉग और सुरक्षा लॉग में स्रोत बनाया (और मैंने सत्यापित किया कि यह regedit के माध्यम से मौजूद है) उच्चीकृत अनुमतियों के साथ स्थापना के दौरान लेकिन त्रुटि बनी रही।

  3. मैंने एप्लिकेशन को web.configफ़ाइल में पूर्ण विश्वास स्तर दिया (और उपयोग कर appcmd.exe) लेकिन कोई फायदा नहीं हुआ।

क्या किसी के पास एक अंतर्दृष्टि है कि यहां क्या किया जा सकता है?

पुनश्च: यह इस प्रश्न का अनुवर्ती है । मैंने दिए गए उत्तरों का अनुसरण किया लेकिन कोई फायदा नहीं हुआ (ऊपर # 2 देखें)।


जब नेट नेटवर्क सेवा के रूप में NetworkService के रूप में चल रही थी, तो मुझे कस्टम स्रोत पर लिखने का प्रयास करने पर यह मिल रहा था। मैंने सर्विस लॉग को .Net सर्विस सेटअप पैकेज के माध्यम से सेट करने के लिए इवेंट लॉग स्रोत को सिर्फ बदल दिया है और यह रजिस्ट्री अनुमतियों को सेट किए बिना काम करता है। मैंने सेवा नाम को HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ EventLog \ Application में पहले ही देख लिया है
जॉन एडम्स


2
एक अन्य संभावित उत्तर: राइट क्लिक एक्सई और "रन अस एडमिनिस्ट्रेटर" चुनें
मैकगिवेर

जवाबों:


169

कुंजी Network Serviceपर पढ़ने की अनुमति देने के लिए EventLog/Security(जैसा कि फिरोजी और royrules22 द्वारा सुझाया गया है) http://geekswithblogs.net/timh/archive/2005/10/05/56029.aspx से निर्देशों का पालन करें

  1. रजिस्ट्री संपादक खोलें:
    1. Startउसके बाद सेलेक्ट करेंRun
    2. दर्ज करें regedt32याregedit
  2. निम्न कुंजी पर नेविगेट / विस्तार करें:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Security

  3. इस प्रविष्टि पर राइट क्लिक करें और अनुमतियाँ चुनें

  4. Network Serviceउपयोगकर्ता जोड़ें

  5. इसे पढ़ें अनुमति

अद्यतन: ऊपर दिए गए चरण डेवलपर मशीनों पर ठीक हैं, जहां आप एप्लिकेशन इंस्टॉल करने के लिए परिनियोजन प्रक्रिया का उपयोग नहीं करते हैं।
हालाँकि, यदि आप अपने आवेदन को अन्य मशीन (ओं) पर तैनात करते हैं, तो स्थापना के दौरान ईवेंट लॉग स्रोतों को पंजीकृत करने पर विचार करें, जैसा कि सेलएविड और निकोल कैलिनोयू के उत्तरों में सुझाया गया है।

मैं PowerShell फ़ंक्शन (ऑक्टोपस Deploy.ps1 में कॉलिंग) का उपयोग कर रहा हूं

function Create-EventSources() {
    $eventSources = @("MySource1","MySource2" )
    foreach ($source in $eventSources) {
            if ([System.Diagnostics.EventLog]::SourceExists($source) -eq $false) {
                [System.Diagnostics.EventLog]::CreateEventSource($source, "Application")
            }
    }
}

IIS7 में आप एक ऐप पूल के लिए पहचान के रूप में "नेटवर्क सेवा" असाइन कर सकते हैं (आप पा सकते हैं कि ApplicationPoolIdentity डिफ़ॉल्ट है) या इसके बजाय आप प्रति अनुप्रयोग पूल में एक नया उपयोगकर्ता बना सकते हैं और उस "कस्टम खाते" पर अनुमतियाँ सेट कर सकते हैं। एक अनुप्रयोग पूल (IIS 7) के लिए एक पहचान निर्दिष्ट करें
Grokodile

5
जब आप IIS
Zé Carlos

7
मैंने IIS_IUSRS को ईवेंटलॉग कुंजी पढ़ने / लिखने और सुरक्षा कुंजी पढ़ने की अनुमति दी। मेरे उत्पाद को इवेंटलॉग की पर लिखने की आवश्यकता है क्योंकि यह अपना स्वयं का ईवेंट स्रोत बनाता है।
duck9

1
duck9 मैं IIS8 के लिए सही है, अधिक जानकारी के लिए यहां देखें: stackoverflow.com/questions/712203/…
thedrs

1
इस समाधान के लिए ऐप पूल उपयोगकर्ताओं और संबंधित अनुमतियों के बारे में serverfault.com/a/81246/219898 को भी देखें । धन्यवाद @ मिचेल फ्रीजिम - एक बड़ी मदद थी।
एंथनी हॉर्न

58

समस्या यह है कि कुंजी EventLog.SourceExistsका उपयोग करने का प्रयास EventLog\Security, पहुंच जो केवल एक व्यवस्थापक के लिए अनुमत है।

C # प्रोग्राम लॉगिंग में एक सामान्य उदाहरण EventLogहै:

string sSource;
string sLog;
string sEvent;

sSource = "dotNET Sample App";
sLog = "Application";
sEvent = "Sample Event";

if (!EventLog.SourceExists(sSource))
    EventLog.CreateEventSource(sSource, sLog);

EventLog.WriteEntry(sSource, sEvent);
EventLog.WriteEntry(sSource, sEvent, EventLogEntryType.Warning, 234);

हालांकि, निम्नलिखित लाइनों अगर कार्यक्रम व्यवस्थापक अनुमतियाँ नहीं है और कुंजी के अंतर्गत नहीं मिला है असफल EventLog\Applicationके रूप में EventLog.SourceExistsतो पहुँच करने की कोशिश करेंगे EventLog\Security

if (!EventLog.SourceExists(sSource))
    EventLog.CreateEventSource(sSource, sLog);

इसलिए अनुशंसित तरीका एक स्थापित स्क्रिप्ट बनाने का है, जो संबंधित कुंजी बनाता है, अर्थात्:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ EventLog \ Application \ dotNet नमूना ऐप

एक तो उन दो लाइनों को हटा सकता है।

आप .regरजिस्ट्री कुंजी बनाने के लिए एक फ़ाइल भी बना सकते हैं । बस एक फ़ाइल में निम्नलिखित पाठ को सहेजें create.reg:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\dotNET Sample App]

1
यह वही है जो मैं अपनी सभी सेवाओं के लिए करता हूं। मेरा मानना ​​है कि यह सही काम है। प्रत्येक सेवा में जहां मैं इवेंट लॉग का उपयोग करता हूं मेरे पास एक .reg फ़ाइल होती है जैसे ऊपर। एक छोटे से नोट को फ़ाइल को यूनिकोड -32 (cp 1200.) के रूप में सहेजा जाना चाहिए
Valo

यह उत्तर त्रुटि के पीछे के वास्तविक कारण का वर्णन करता है। मौजूद चेक पूरी कुंजी को एन्यूमरेट करने की कोशिश करता है। यदि यह मौजूद है, तो checkExists ठीक काम करता है।
डैनो

EventLog \ Security यह कार्य करने के लिए महत्वपूर्ण है, सुनिश्चित करें कि आपके पास उस पर अनुमति है।
प्रिंस्का

45

समाधान यह था कि "नेटवर्क सर्विस" अकाउंट को EventLog / Security key पर रीड की अनुमति दी जाए।


1
मैं चारों ओर समान समाधान देखता हूं। लेकिन मैं सोच रहा हूं कि ऐसा क्यों है। क्योंकि मैं देख सकता हूँ कि बहुत सी सेवाएँ NetworkService के रूप में लॉग ऑन हैं और उन्हें इवेंट लॉग / सुरक्षा को पढ़ने में सक्षम होना चाहिए। तो NetworkService की अनुमति को जोड़ने की आवश्यकता क्यों है?
एच - एन

11
हममें से जो सामान्य रूप से रजिस्ट्री के माध्यम से क्रॉल नहीं करते हैं, उनके लिए यह लिंक सहायक हो सकता है: social.msdn.microsoft.com/forums/en-US/…
एलन

अच्छा लिंक एलन। स्वीकृत उत्तर द्वारा बिंदु # 3 महत्वपूर्ण है और पहले ही मुझे एक बार काट चुका है। माता-पिता की अंतिम अनुमति देने पर EventLog रजिस्ट्री कुंजी सुरक्षा और आभासी सर्वर जैसे "दुर्गम लॉग" का प्रचार नहीं करती, भले ही वे रजिस्ट्री में बच्चे की चाबियाँ हों। यदि आप पूर्ण ईवेंट लॉग एक्सेस चाहते हैं, तो आपको बीओटीएच पैरेंट इवेंट लॉग लेवल और चाइल्ड सिक्योरिटी लेवल पर अनुमति देनी होगी।
बेन बैरेथ

1
जब आप IIS
Zé Carlos

उन लोगों के लिए जिन्होंने कॉपी / पेस्ट करने की कोशिश की, सुनिश्चित करें कि "नेटवर्क सेवा" शब्दों के बीच एक जगह है।
क्रिस Fremgen

7

मेरे लिए संपूर्ण 'EventLog' शाखा में 'NetworkService' के लिए 'रीड' अनुमति देने पर काम किया।


यह बहुत प्रासंगिक नहीं है, क्योंकि "सुरक्षा" या "वर्चुअल सर्वर" जैसी उप-कुंजियों के लिए व्यक्तिगत रूप से पढ़ने की पहुंच प्रदान करने की आवश्यकता है, क्योंकि मूल कुंजी से विरासत में नहीं होने के लिए अनुमतियाँ निर्धारित की गई हैं।
सर्ज

7

मुझे VS2010 (XP के तहत VS2008 से अपग्रेड) के तहत विकसित कंसोल प्रोग्राम के साथ बहुत ही समान समस्या थी। मेरा प्रोग कुछ लॉगिंग करने के लिए एनलिब का उपयोग करता है। त्रुटि को निकाल दिया गया क्योंकि EntLib के पास एक नया ईवेंट स्रोत दर्ज करने की अनुमति नहीं थी।

इसलिए मैंने एक बार एक प्रशासक के रूप में अपने संकलित प्रोग को शुरू किया : इसने कार्यक्रम स्रोत को पंजीकृत किया। फिर मैं समस्या के बिना वीएस के अंदर से विकास और डिबगिंग वापस चला गया।

(आप http://www.blackwasp.co.uk/EventLog_3.aspx का भी उल्लेख कर सकते हैं , इससे मुझे मदद मिली


7

यह अपवाद मेरे लिए .NET कंसोल ऐप से एक निर्धारित कार्य के रूप में चल रहा था, और मैं मूल रूप से एक ही काम करने की कोशिश कर रहा था - एक नया ईवेंट स्रोत बनाएं और ईवेंट लॉग में लिखें।

अंत में, उपयोगकर्ता के लिए पूर्ण अनुमतियाँ सेट करना, जिसके तहत निम्न कुंजियों पर कार्य चल रहा था, मेरे लिए चाल चली गई:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Security
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog

3
आपने मेरा दिन बचाया। BTW, पढ़ने की अनुमति पर्याप्त थी eventlog\Applicationऔर eventlog\Security; eventlogकेवल रूट पर पूर्ण नियंत्रण की आवश्यकता है ।
रूड हेलडरमैन

6

मैं इस समस्या को हल करने के लिए यहां लगभग हर चीज की कोशिश करता हूं ... मैं यहां जवाब देता हूं जो मेरी मदद करते हैं:

समस्या को हल करने का दूसरा तरीका:

  • IIS कंसोल में, अपनी साइट को प्रबंधित करने वाले एप्लिकेशन पूल पर जाएं, और इसे चलाने वाली पहचान पर ध्यान दें (आमतौर पर नेटवर्क सेवा)
  • सुनिश्चित करें कि यह पहचान KEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Eventlog (कठोरता-क्लिक, प्राधिकरण) पढ़ सकती है
  • अब इस एप्लिकेशन पूल की पहचान को स्थानीय सिस्टम में बदलें, लागू करें, और नेटवर्क सेवा पर वापस जाएं

क्रेडेंशियल पुनः लोड किए जाएंगे और EventLog पहुंच योग्य होगा

में http://geekswithblogs.net/timh/archive/2005/10/05/56029.aspx , धन्यवाद माइकल Freidgeim


एप्लिकेशन पूल को "ApplicationPoolIdentity" से "LocalSystem" में बदलना मेरे लिए इवेंट लॉग बनाने / पढ़ने के मुद्दे को हल करता है।
मेजेस्ट्ज़िम

4

मैं एक ही मुद्दे में भाग गया, लेकिन मुझे एक स्तर ऊपर जाना था और सभी को HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ EventLog \ key को सुरक्षा के लिए नीचे जाने के बजाय, मेरे लिए इस मुद्दे को मंजूरी दे दी।


1
स्थानीय सिस्टम के रूप में चलाने के लिए एप्लिकेशन को सेट करने का भी प्रयास करें, इसलिए रजिस्ट्री कुंजी बनाई गई है, फिर आप बाद में NetworkService में बदल सकते हैं।
दानवकुंडनी

4

विंडोज 7 64 बिट पर एक ही मुद्दा। व्यवस्थापक के रूप में चला समस्या को हल किया।


4

जब आप System.Diagnostics.EventLost.WriteEntry ("SourceName", "ErrorMessage", EventLogEntryType) का उपयोग करते हैं, तो स्रोत नाम के साथ एक नई कुंजी का उपयोग HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ reglog में एप्लिकेशन में किया जाना चाहिए

तो मूल रूप से आपके उपयोगकर्ता के पास कुंजी बनाने की अनुमति नहीं है। अनुप्रयोग पूल उन्नत सेटिंग्स में पहचान मूल्य से आप उपयोग कर रहे हैं कि उपयोगकर्ता के आधार पर निम्नलिखित कर सकते हैं:

  1. RegEdit चलाएं और HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Eventlog पर जाएँ
  2. EventLog कुंजी में राइट क्लिक करें और अनुमतियाँ चुनें ... विकल्प 3. अपने उपयोगकर्ता को पूर्ण नियंत्रण पहुंच के साथ जोड़ें।

    -यदि आप "NetworkService" का उपयोग कर रहे हैं NETWORK SERVICE उपयोगकर्ता जोड़ें

    -अगर आप usinf हैं "ApplicationPoolIdentity" में IIS APPPOL {अपने ऐप पूल का नाम} जोड़ें (उपयोगकर्ता को खोजने पर स्थानीय मशीन स्थान का उपयोग करें)।

    -यदि आप "लोकल सिस्टम" का उपयोग कर रहे हैं, तो सुनिश्चित करें कि उपयोगकर्ता के पास प्रशासक की अनुमति है। यह कमजोरियों के लिए अनुशंसित नहीं है।

  3. HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Colog's Security के लिए 1 से 3 तक के चरणों को दोहराएँ

विज़ुअल स्टूडियो के साथ डिबगिंग के लिए मैं "NetworkService" (यह ASP.NET उपयोगकर्ता है) का उपयोग करता हूं और जब साइट प्रकाशित होती है तो मैं "AppicationPoolIdentity" का उपयोग करता हूं।


3

FYI करें ... मेरी समस्या यह थी कि गलती से "स्थानीय सेवा" के बजाय ProcessInstaller के गुणों पर खाता के रूप में "स्थानीय सेवा" चुना गया था। एमएसडीएन ट्यूटोरियल का अनुसरण करने वाले किसी और के लिए सिर्फ स्थानीय सेवा चयन के रूप में उल्लेख करना पहले दिखाता है और मैं इस पर ध्यान नहीं दे रहा था ...।


3

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

जिन दो का मैंने उपयोग करना शुरू किया है, वे ".Net रनटाइम" और "एप्लिकेशन एरर" हैं, दोनों ही ऐसा लगता है कि वे अधिकांश मशीनों पर मौजूद होंगे।

मुख्य नुकसान उस घटना से समूह की अक्षमता है, और यह कि आपके पास संभवतः एक संबंधित इवेंट आईडी नहीं है, जिसका अर्थ है कि लॉग प्रविष्टि बहुत अच्छी तरह से कुछ के साथ उपसर्ग कर सकती है "स्रोत से 0 के लिए इवेंट आईडी 0 का विवरण। रनटाइम नहीं मिल सकता है .... "यदि आप इसे छोड़ देते हैं, लेकिन लॉग इन हो जाता है, और आउटपुट मोटे तौर पर समझदार दिखता है।

परिणामी कोड की तरह लग रहा है:

EventLog.WriteEntry(
    ".Net Runtime", 
    "Some message text here, maybe an exception you want to log",
    EventLogEntryType.Error
    );

बेशक, चूंकि हमेशा एक मौका होता है कि आप एक ऐसी मशीन पर हों, जिसके पास जो भी कारण हो, उन घटनाओं के स्रोत नहीं हैं, आप शायद try {} catch{}इसे विफल होने की स्थिति में लपेटना चाहते हैं और इससे चीजें खराब हो जाती हैं, लेकिन घटनाएं अब बहुत बड़ी हैं।


2

मैं IIS पर काम नहीं कर रहा हूं, लेकिन मेरे पास एक ऐसा एप्लिकेशन है जो एक ही त्रुटि को 2K8 बॉक्स पर फेंकता है। यह एक 2K3 बॉक्स पर बस ठीक काम करता है, जाओ आंकड़ा।

मेरा संकल्प था "प्रशासक के रूप में दौड़ें" आवेदन को उन्नत अधिकार देने के लिए और सब कुछ खुशी से काम करता है। मुझे उम्मीद है कि यह आपको सही दिशा में ले जाने में मदद करेगा।

विंडोज 2008 अधिकार / अनुमतियाँ / उन्नयन है वास्तव में विंडोज 2003, गार से अलग है।


2

नमस्ते मैं उसी समस्या में भाग गया था जब मैं एक एप्लिकेशन विकसित कर रहा था और इसे एक दूरस्थ पीसी पर स्थापित करना चाहता था, मैंने इसे निम्न करके ठीक किया:

1) अपनी रजिस्ट्री प्राप्त करें, पता लगाएँ: HKLM \ System \ CurrentControlSet \ Services \ EventLog \ Application (??? आपका_SERVICE_OR_APP_NAME ???)

ध्यान दें कि "({your_SERVICE_OR_APP_NAME ???)" आपकी एप्लिकेशन सेवा का नाम है, जैसा कि आपने इसे परिभाषित किया था जब आपने अपनी .NET तैनाती को बनाया था, उदाहरण के लिए, यदि आपने अपने नए एप्लिकेशन का नाम "मेरा नया ऐप" रखा है, तो कुंजी होगी: HKLM \ System \ CurrentControlSet \ Services \ EventLog \ Application \ My नया ऐप

नोट 2: आप किस इवेंट में लिख रहे हैं, इस पर निर्भर करते हुए, आप अपने DEV बॉक्स, \ Application \ (जैसा कि ऊपर उल्लेख किया गया है), या यह भी (\ सिस्टम) या (\ सुरक्षा) पर निर्भर कर सकते हैं कि आपका आवेदन किस घटना में लिख रहा है, अधिकतर , (\ Application) हर समय ठीक होना चाहिए।

2) ऊपर की कुंजी पर होने से, मेनू से; "फ़ाइल" -> "निर्यात" चुनें, और फिर फ़ाइल सहेजें। (नोट: यह आपकी आवश्यक रजिस्ट्री सेटिंग्स बनाएगा जब एप्लिकेशन को इवेंट व्यूअर में लिखने के लिए इस कुंजी तक पहुंचने की आवश्यकता होगी), नई फ़ाइल एक .REG फ़ाइल होगी, तर्क के लिए, इसे "मेरा नया App.REG" कहें। "

3) PRODuction पर तैनात करते समय, सर्वर के सिस्टम के एडमिनिस्ट्रेटर (SA) से सलाह लें, एप्लिकेशन के साथ "My New App.REG" फाइल को सौंपें, और SA को इस REG फाइल को इंस्टॉल करने के लिए कहें, एक बार किया (एडमिन के रूप में) अपने एप्लिकेशन के लिए कुंजी बनाएं।

4) अपना एप्लिकेशन चलाएं, इसके लिए इस कुंजी के अलावा किसी और चीज़ को एक्सेस करने की आवश्यकता नहीं होनी चाहिए।

समस्या अब तक हल हो जानी चाहिए।

कारण:

जब एक एप्लिकेशन विकसित होता है जो EventLog में कुछ भी लिखता है, तो उसे Eventlog रजिस्ट्री के तहत इसके लिए एक कुंजी की आवश्यकता होगी यदि यह कुंजी नहीं मिली है, तो यह इसे बनाने की कोशिश करेगा, जो तब ऐसा करने की कोई अनुमति नहीं होने पर विफल रहता है। उपरोक्त प्रक्रिया, एक एप्लिकेशन को तैनात करने के समान है (मैन्युअल रूप से) जबकि हम इसे स्वयं बना रहे हैं, और आपको सिरदर्द की कोई आवश्यकता नहीं है क्योंकि आप हर किसी के लिए अनुमतियों को जोड़कर रजिस्ट्री को ट्विक नहीं कर रहे हैं जो कि उत्पादन सर्वर पर एक सुरक्षित जोखिम है।

मुझे उम्मीद है कि यह इसे हल करने में मदद करता है।


2

यद्यपि इंस्टॉलर उत्तर एक अच्छा उत्तर है, यह हमेशा व्यावहारिक नहीं होता है जब सॉफ्टवेयर के साथ काम करते हैं जो आपने नहीं लिखा था। PowerShell कमांड New-EventLog ( http://technet.microsoft.com/en-us/library/hh849768.aspx ) का उपयोग करके लॉग और ईवेंट स्रोत बनाने के लिए एक सरल उत्तर है

PowerShell को एक व्यवस्थापक के रूप में चलाएं और लॉग नाम और स्रोत को बदलकर निम्नलिखित कमांड को चलाएं जिसकी आपको आवश्यकता है।

नई- EventLog -LogName अनुप्रयोग- स्रोत TFSAggregator

जब एग्रीगेटर कोडप्लेक्स से समस्या चलाता है, तो मैंने इवेंट लॉग अपवाद को हल करने के लिए इसका उपयोग किया ।


1

हमारे सभी 2008 सर्वरों के साथ एक समान समस्या थी। सुरक्षा लॉग ने एक GPO के कारण पूरी तरह से काम करना बंद कर दिया, जिसने समूह प्रमाणीकरण उपयोगकर्ताओं को ले लिया और कुंजी से दूर की अनुमति को पढ़ाHKLM\System\CurrentControlSet\Services\EventLog\security

Microsoft की अनुशंसा के अनुसार इस बैक को डालने से समस्या ठीक हो गई। मुझे संदेह है कि उच्च स्तर पर पढ़े गए सभी प्रमाणित उपयोगकर्ता आपकी समस्या को ठीक करेंगे।


1

मैंने इसी तरह के मुद्दे को मारा - मेरे मामले में स्रोत निहित <, >वर्ण। 64 बिट मशीनें नए लॉग का उपयोग कर रही हैं - xml आधार मैं कहूंगा और ये वर्ण (स्ट्रिंग से सेट) अमान्य xml बनाते हैं जो अपवाद का कारण बनता है। तर्क से यह Microsoft के मुद्दे पर विचार किया जाना चाहिए - स्रोत (नाम / स्ट्रिंग) को सही ढंग से संभालना नहीं।


1

समाधान बहुत सरल है - व्यवस्थापक मोड में विजुअल स्टूडियो एप्लिकेशन चलाएं!


जब वी.एस. में समस्या निवारण और यह त्रुटि आई, यह मेरे लिए यह ठीक किया
wruckie

यह त्रुटि होगी क्योंकि यह VS नहीं है जो इस कॉल को लागू कर रहा है, यह एक ऐसा अनुप्रयोग है जो संभवतः एक अलग सुरक्षा संदर्भ में चल रहा है।
CodeMonkey1313

0

मेरा ऐप क्लाइंट वेब सर्वर पर इंस्टॉल हो जाता है। नेटवर्क सेवा अनुमतियों और रजिस्ट्री के साथ फ़िदा करने के बजाय, मैंने जाँच SourceExistsऔर चलाने का विकल्प चुनाCreateEventSource अपने इंस्टॉलर में ।

log.source = "xx"यदि मेरा इवेंट स्रोत नहीं बनाया गया था, तो मैंने इसे एक ज्ञात स्रोत पर सेट करने के लिए ऐप में चारों ओर एक कोशिश / कैच जोड़ा है (यह केवल तभी आएगा जब मैंने पुनः स्थापित करने के बजाय एक .dll को स्वैप किया हो)।



-1

वीएस के भीतर एक ऐप चलाते समय मेरे पास यह मुद्दा था। मुझे केवल एक बार प्रशासक के रूप में कार्यक्रम चलाना था, फिर मैं वी.एस.

व्यवस्थापक के रूप में चलाने के लिए, बस विंडोज़ एक्सप्लोरर में अपने डिबग फ़ोल्डर में नेविगेट करें। प्रोग्राम पर राइट-क्लिक करें और व्यवस्थापक के रूप में रन चुनें।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.