2010-02-17 19 views
27

मैंने .NET 4.0 आरसी का उपयोग करके Log4Net लॉगिंग फ्रेमवर्क पर निर्भर प्रोजेक्ट को संकलित करने का प्रयास किया और कुछ समस्याओं में भाग गया।लॉग 4नेट और .NET 4.0 आरसी

बॉक्स के बाहर (केवल लक्ष्य को .NET 4.0 में बदलना), यह अब काम नहीं करता है, एक सुरक्षा अपवाद फेंक दिया जाता है।

विरासत सुरक्षा नियमों का उल्लंघन किया जबकि सदस्य अधिभावी: 'log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData (System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)'। अधिभावी विधि की सुरक्षा पहुँच विधि जा रहा है

यह की सुरक्षा पहुँच से मेल खाना चाहिए log4net विधानसभा (AssemblyInfo.cs में) करने के लिए निम्न पंक्ति जोड़कर हल किया गया था:

[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)] 

क्या कोई यह समझा सकता है कि इसकी आवश्यकता क्यों है और क्या इस तरह से ऐसा करने के विकल्प हैं? क्या यह लॉग 4नेट लिखा गया है या कुछ और संबंधित है?

उत्तर

22

यह आवश्यक है क्योंकि .NET 4.0 जोड़ा गया Level 2 Security-Transparent Code (जो नया डिफ़ॉल्ट है) और Code Access Security से दूर हो गया। Level 1 Security-Transparent Code अभी भी संगतता के लिए है, लेकिन जैसा कि आपने पाया है, निर्दिष्ट किया जाना है।

आप सही हैं कि यह लॉग 4नेट कैसे लिखा जाता है से संबंधित है। या एक अलग प्रवेश समाधान :)

1

यह त्रुटि https://issues.apache.org/jira/browse/LOG4NET-347 के रूप में जाना जाता है और यह निर्धारित किया गया है लगता है के लिए स्विच - वास्तव में समाधान आप log4net कोड को अद्यतन करने के अलावा अन्य कोई विकल्प नहीं पाया करने के लिए है।