2012-10-09 11 views
7

मैं डब्ल्यूसीएफ के साथ इंटरग्रेटेड एंटरप्राइज़ लाइब्रेरी सत्यापन ब्लॉक का उपयोग कर रहा हूं। यह System.Runtime.InteropServices.COMException (0x8000FFFF): Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED)) की रिपोर्ट करता है जब मैं WIN32 API LogonUser और WindowsIdentity.Impersonate के साथ किसी अन्य उपयोगकर्ता का प्रतिरूपण करता हूं। ऐसा लगता है कि कॉन्फ़िगरेशन लोड करने पर सुरक्षा सबूत प्राप्त करने में कुछ गड़बड़ है। अगर मैं प्रतिरूपण के कोडिंग को हटा देता हूं, तो यह बिना किसी त्रुटि के काम करता है। ये अपवाद स्टैक ट्रेस का हिस्सा हैं, आशा है कि आप कुछ सहायक दें। धन्यवाद।अन्य उपयोगकर्ता का प्रतिरूपण करते समय आपदाजनक विफलता

System.Runtime.InteropServices.COMException (0x8000FFFF): Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED)) 
    at System.Security.Policy.PEFileEvidenceFactory.GetLocationEvidence(SafePEFileHandle peFile, SecurityZone& zone, StringHandleOnStack retUrl) 
    at System.Security.Policy.PEFileEvidenceFactory.GenerateLocationEvidence() 
    at System.Security.Policy.PEFileEvidenceFactory.GenerateEvidence(Type evidenceType) 
    at System.Security.Policy.AssemblyEvidenceFactory.GenerateEvidence(Type evidenceType) 
    at System.Security.Policy.Evidence.GenerateHostEvidence(Type type, Boolean hostCanGenerate) 
    at System.Security.Policy.Evidence.GetHostEvidenceNoLock(Type type) 
    at System.Security.Policy.Evidence.GetHostEvidence(Type type, Boolean markDelayEvaluatedEvidenceUsed) 
    at System.Security.Policy.AppDomainEvidenceFactory.GenerateEvidence(Type evidenceType) 
    at System.Security.Policy.Evidence.GenerateHostEvidence(Type type, Boolean hostCanGenerate) 
    at System.Security.Policy.Evidence.GetHostEvidenceNoLock(Type type) 
    at System.Security.Policy.Evidence.RawEvidenceEnumerator.MoveNext() 
    at System.Security.Policy.Evidence.EvidenceEnumerator.MoveNext() 
    at System.Configuration.ClientConfigPaths.GetEvidenceInfo(AppDomain appDomain, String exePath, String& typeName) 
    at System.Configuration.ClientConfigPaths.GetTypeAndHashSuffix(AppDomain appDomain, String exePath) 
    at System.Configuration.ClientConfigPaths..ctor(String exePath, Boolean includeUserConfig) 
    at System.Configuration.ClientConfigPaths.GetPaths(String exePath, Boolean includeUserConfig) 
    at System.Configuration.ClientConfigurationHost.CreateConfigurationContext(String configPath, String locationSubPath) 
    at System.Configuration.Internal.DelegatingConfigHost.CreateConfigurationContext(String configPath, String locationSubPath) 
    at System.Configuration.BaseConfigurationRecord.get_ConfigContext() 
+0

fyi - इसी तरह: https://stackoverflow.com/a/23650343/717732 – quetzalcoatl

उत्तर

-2

कृपया एमएस मंचों में इस सूत्र पर यह करने के लिए मेरी प्रतिक्रिया देखें:

http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/b5b7a179-3737-4380-b6cf-843f3e71b317/

यह धागा शीर्षक है: कनेक्शन COM अपवाद फेंक बेतरतीब ढंग से पूलिंग।

आप लॉगऑनसर के लिए पृष्ठ पर टेक्स्ट खोज सकते हैं।

+0

असंबद्ध लगता है। एकमात्र आम बात "प्रतिरूपण के साथ कुछ समस्या" है। आपके द्वारा इंगित धागा लॉगऑनसर और हैंडल को संभालने पर केंद्रित है। हमारे पास ऐसा कुछ भी नहीं है। यहां हमें कॉन्फ़िगरेशन प्रबंधक के साथ कुछ समस्या है जो फ़ाइल पढ़ने से पहले हुड के तहत प्रतिरूपण करने की कोशिश कर रहा है और उस पर असफल रहा है, संभवतः क्योंकि इस प्रक्रिया में निजीकरण के लिए प्रतिरूपण करने के लिए निजीकरण नहीं है, क्योंकि मुझे पता नहीं है, सीमित नहीं है -सर, गैर-इंटरैक्टिव, आदि – quetzalcoatl

5

ऐसा लगता है कि समस्या यह है कि सिस्टम। कॉन्फ़िगरेशन app.config लोड करते समय प्रतिरूपण करता है। मैं इस समस्या के आसपास

ConfigurationManager.GetSection("system.xml/xmlReader"); 

चलाकर प्रतिरूपण नहीं कर रहा था। ऐसा करने से बाद में प्रतिरूपण सफल हो गया।

संपादित करें: थोड़ा स्पष्ट करने के लिए, मेरा मानना ​​है कि ऐसा करने से app.config को लोड किया जा सकता है और स्मृति में कैश किया जा सकता है, इसलिए कोड पथ जो समस्या का कारण बनता है केवल एक बार और मूल प्रमाण-पत्रों के साथ निष्पादित किया जाता है।

+0

धन्यवाद, मेरे लिए यह निश्चित चीजें। यह .NET 4.x में कम से कम 4.5.1 में एक बग होना चाहिए। यह .NET 2.0 के साथ नहीं होता है। XmlElement गुण मान सेट करने का प्रयास करते समय मुझे समस्या आती है। हालांकि, अगर मैं एक नया XmlDocument() बनाता हूं। CreateElement ("Test"), उस मान को उस मान पर सेट करें, फिर इसे सेट करने के लिए इसे सेट करें, यह काम करता है। बहुत अजीब। –

1

लंबी लड़ाई और कई प्रोकॉन कैप्चर के बाद, मैंने पाया है कि कुछ स्थितियों में, इंटरऑप के दौरान सुरक्षा क्षेत्र की जांच करते समय और प्रतिरूपण के दौरान विफलता होती है।

https://support.microsoft.com/en-us/kb/945701?wa=wsignin1.0

आप, बजाय के रूप में निर्देशित w3wp.exe जोड़ने की, अंत जहां एक रजिस्ट्री नोड और कुंजी जोड़ रहे हैं की जाँच अपने स्वयं के निष्पादन के फ़ाइल नाम जोड़ देते हैं तो: यह इस KB से संबंधित है। यह मेरे लिए काम किया - वाईएमएमवी।

संबंधित मुद्दे