दिलचस्प पोस्ट
स्विफ्ट के साथ आईओएस 8 पर टेक्स्ट के साथ एक गतिविधि सूचक कैसे प्रदर्शित किया जाए? रुबी ऑब्फ़सकेटर एक बयान में कई पोस्ट और पूर्व वेतन वृद्धि का उत्पादन एनीमेशन चालू / बंद करने के लिए स्विंग टाइमर का उपयोग कैसे करें एमवीसी कस्टम सत्यापन: दो तिथियों की तुलना करें सफेद स्थान के संघर्ष के बिना विलय IOS में प्रमाणीकरण के लिए LDAP का उपयोग करना 'प्रिन्ट प्रिंट' विंडो% PATH% variable – ';' पर कैसे विभाजित है सीएमडी खोल में बेस64 जावा सांकेतिक शब्दों में बदलना और एक स्ट्रिंग डीकोड OpenMP प्रोग्राम क्रमिक एक से धीमी है सूचि धागे-सुरक्षित हैं एक सरणी में सर्वोच्च घटना के साथ तत्व प्राप्त करें क्यों नंपी में 0d सरणियों को स्केलर नहीं माना जाता है? पायथन स्रोत में यूटीएफ -8 एन्कोडिंग के साथ काम करना मोंगोडीबी में एक विशेष दस्तावेज़ के विशिष्ट सरणी के भीतर, एक सरणी के भीतर मूल्य का अद्यतन कैसे किया जाए?

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

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

जब मैं कोशिश करूँगा और ब्राउजर पर पेज पर जाउंगा तो मुझे यह मिलेगा:

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

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

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

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

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

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

स्टैक ट्रेस:

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

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

[स्निप]

ये उन चीजों की मैंने कोशिश और हल करने के लिए किया है:

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

  2. मैंने एवरेटेड अनुमतियों के साथ स्थापना के दौरान स्रोत और अनुप्रयोग लॉग और सुरक्षा लॉग में (और मैंने इसे सत्यापित किया हुआ regedit के माध्यम से मौजूद) बनाया है, लेकिन त्रुटि बनी हुई है।

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

क्या किसी को यह जानकारी है कि यहां क्या किया जा सकता है?

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

वेब के समाधान से एकत्रित समाधान "इवेंट लॉग को लिखते समय System.Security.SecurityException"

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

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

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Security

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

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

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

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

मैं PowerShell फ़ंक्शन का उपयोग कर रहा हूं (ऑक्टीपस तैनाती .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") } } } 

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

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

 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\Application रूप में नहीं मिल रहा है, तो EventLog\Security तक पहुंचने का प्रयास करेगा।

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

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

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ EventLog \ Application \ डॉटनेट नमूना ऐप

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

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

 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\dotNET Sample App] 

समाधान "नेटवर्क सेवा" को EventLog / Security कुंजी पर पढ़ने की अनुमति देने के लिए था

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

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

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

मेरे लिए ' संपूर्ण' इवेंट लॉग ' शाखा में ' नेटवर्क सर्विस 'के लिए' पढ़ें 'की अनुमति दे दी है।

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

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

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

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

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

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

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

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

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

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

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

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

Windows 2008 अधिकार / अनुमतियाँ / ऊंचाई वास्तव में Windows 2003, gar से अलग है।

विंडोज 7 64bits पर एक ही मुद्दा प्रशासक ने इस समस्या का हल के रूप में भागो

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

1) अपने रजिस्ट्री पर जाएं, खोजें: HKLM \ System \ CurrentControlSet \ Services \ EventLog \ Application (??? YOUR_SERVICE_OR_APP_NAME ???)

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

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

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

3) प्रोडक्शन की तैनाती करते समय, सर्वर के सिस्टम के प्रशासक (एसए) से परामर्श करें, आवेदन के साथ "मेरी नई ऐप। आरईजी" फाइल पर हाथ डालें और एसए को इस आरईजी फाइल को स्थापित करने के लिए कहें, एक बार (व्यवस्थापक के रूप में) अपने applicaion के लिए कुंजी बना

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

अब समस्या हल होनी चाहिए

कारण:

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

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

उपयोग किए गए स्रोत नाम के साथ एक नई कुंजी, जब आप System.Diagnostics.EventLog.WriteEntry ("SourceName", "ErrorMessage", EventLogEntryType.Error) का उपयोग करते हुए regEdit में HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ eventlog \ अनुप्रयोग के तहत बनाए जाने की आवश्यकता है ;

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

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

    -यदि आप "NetworkService" का प्रयोग कर रहे हैं तो नेटवर्कर सेवा उपयोगकर्ता जोड़ें

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

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

  3. HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ eventlog \ Security के लिए चरण 1 से 3 में दोहराएं

दृश्य स्टूडियो के साथ डीबगिंग के लिए मैं "नेटवर्कसेवायर" (यह एएसपी.नेट उपयोगकर्ता है) का उपयोग करता हूं और जब साइट प्रकाशित हो जाती है तो मैंने "एपशनपोलीइडेन्टिटी" का इस्तेमाल किया था

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

माइक्रोसॉफ्ट की सिफारिश के अनुसार इसे वापस लाना इस मुद्दे को सही किया। मुझे संदेह है कि सभी प्रमाणित उपयोगकर्ताओं को उच्च स्तर पर पढ़े जाने पर भी आपकी समस्या ठीक हो जाएगी।

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

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

एक प्रशासक के रूप में PowerShell को चलाएं और निम्न नाम को लॉग नाम और स्रोत की आवश्यकता के अनुसार बदलें।

नया इवेंट लॉग-लॉग नाम आवेदन- स्रोत TFSAggregator

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

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

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

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

परिणामी कोड की तरह दिखना समाप्त होता है:

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

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

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

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

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

नीचे web.config में आज़माएं

  <system.web> <trust level="Full"/> </system.web> 

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

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

समाधान के पुनर्निर्माण के लिए मेरे लिए काम किया