2012-08-23 7 views
14

हैलो और मदद के लिए अग्रिम धन्यवाद, मुझे पता है कि यह प्रश्न या इसी तरह के प्रश्न पोस्ट किए गए हैं, अक्सर एमवीसी 3 के विशिष्ट संबंध के साथ अनुप्रयोगों। हालांकि, जब भी मैं एक .NET 4.0 लक्ष्य ढांचे का उपयोग कर दृश्य वेब डेवलपर एक्सप्रेस 2010 के भीतर से किसी भी एप्लिकेशन को आजमाने और लॉन्च करने का प्रयास करता हूं तो मुझे यह त्रुटि संदेश मिल रहा है।System.MethodAccessException: सुरक्षा महत्वपूर्ण विधि तक पहुंचने के लिए सुरक्षा पारदर्शी विधि द्वारा प्रयास सभी अनुप्रयोगों पर विफल रहता है

सटीक त्रुटि संदेश है:

प्रयास सुरक्षा पारदर्शी विधि 'System.Runtime.Diagnostics.DiagnosticTrace..ctor (System.String, System.Guid)' द्वारा सुरक्षा बहुत ज़रूरी विधि 'सिस्टम का उपयोग करने की। Runtime.Diagnostics.EtwDiagnosticTrace..ctor (System.String, System.Guid) 'विफल'।

असेंबली 'सिस्टम। सेवा मॉडल। आंतरिक, संस्करण = 4.0.0.0, संस्कृति = तटस्थ, सार्वजनिकKeyToken = 31bf3856ad364e35' को AllowPartiallyTrustedCallersAttribute के साथ चिह्नित किया गया है, और स्तर 2 सुरक्षा पारदर्शिता मॉडल का उपयोग करता है। स्तर 2 पारदर्शिता डिफ़ॉल्ट रूप से सुरक्षा पारदर्शी बनने के लिए AllowPartiallyTrustedCallers असेंबली में सभी विधियों का कारण बनती है, जो इस अपवाद का कारण हो सकती है।

स्टैक ट्रेस: ​​

[MethodAccessException: Attempt by security transparent method 'System.Runtime.Diagnostics.DiagnosticTrace..ctor(System.String, System.Guid)' to access security critical method 'System.Runtime.Diagnostics.EtwDiagnosticTrace..ctor(System.String, System.Guid)' failed. 

Assembly 'System.ServiceModel.Internals, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' is marked with the AllowPartiallyTrustedCallersAttribute, and uses the level 2 security transparency model. Level 2 transparency causes all methods in AllowPartiallyTrustedCallers assemblies to become security transparent by default, which may be the cause of this exception.] 
    System.Runtime.Diagnostics.DiagnosticTrace..ctor(String traceSourceName, Guid etwProviderId) +24 
    System.ServiceModel.Activation.FxTrace.InitializeTracing() +90 
    System.ServiceModel.Activation.FxTrace.get_Trace() +84 
    System.ServiceModel.ServiceHostingEnvironment.EnsureInitialized() +59 
    System.ServiceModel.ServiceHostingEnvironment.OnEnsureInitialized(Object state) +4 
    System.ServiceModel.AspNetPartialTrustHelpers.PartialTrustInvoke(ContextCallback callback, Object state) +52 
    System.ServiceModel.ServiceHostingEnvironment.SafeEnsureInitialized() +65 
    System.ServiceModel.Activation.HttpModule.ProcessRequest(Object sender, EventArgs e) +58 
    System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +143 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69 

मैं एक नुकसान यहां पर पूरी तरह से कर रहा हूँ। अगर मैं स्क्रैच से बस कोई मूल एप्लिकेशन बनाता हूं और इसे लॉन्च और लॉन्च करता हूं, यहां तक ​​कि कुछ भी नहीं जोड़ा गया है, तो मुझे यह त्रुटि स्क्रीन मिलती है। मैं

<compilation debug="true" targetFramework="4.0" /> 

टैग से लक्ष्य ढांचे = "4.0" विशेषता को दूर करने और बिना किसी परिणाम के इसे चलाने की कोशिश की है। BadImageFormatException - Is it possible to specify which .NET version is used to run an executable? मैं नेट 4.0 ढांचे स्थापना की मरम्मत क्योंकि मैंने सुना है कि एक मुद्दा हो सकता करने की कोशिश की: मैं उस गुण को दूर करने और के रूप में इस धागे में सुझाव दिया

<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v2.0.50727"/> 
    <supportedRuntime version="v4.0.30319"/> 
</startup> 

जोड़ने की कोशिश की है। मैंने माइक्रोसॉफ्ट विजुअल स्टूडियो 2010 से एक परियोजना पर काम करने के लिए कल रात दृश्य वेब डेवलपर स्थापित किया क्योंकि मेरा परीक्षण संस्करण समाप्त हो गया था, किसी भी मदद या संभावित कामकाज की सराहना की जाएगी।

उत्तर

14

मैंने आज इस मुद्दे का अनुभव किया। जहां तक ​​मैं इसे समझता हूं, समस्या यह है कि .NET 4.0 असेंबली अब सुरक्षा महत्वपूर्ण पर डिफ़ॉल्ट है। सुरक्षा पारदर्शी कोड सुरक्षा सुरक्षा कोड में कॉल करने के लिए यह संभव नहीं है।

मेरे मामले में समाधान AllowPartiallyTrustedCallersAttribute से संबंधित था जो मेरे आवेदन में केवल कुछ विधानसभाओं पर परिभाषित था। मुझे या तो सभी असेंबली से इस विशेषता को हटा देना था, या इसे सभी में जोड़ना था।

+0

मैंने अन्य स्थानों पर ऐसा कुछ पढ़ा है, हालांकि मैं आपके फ़िक्स को सफलतापूर्वक कार्यान्वित करने में सक्षम नहीं था, मुझे विश्वास है कि यह सही प्रतिक्रिया है। – Christian

+0

AllowPartiallyTrustedCallers को हटाकर AssemblyInfo.cs से मेरा समाधान मेरे समाधान के लिए काम किया। मुझे एक पुरानी असेंबली से त्रुटि मिल रही थी जो नवीनतम नेट फ्रेमवर्क संस्करणों का उपयोग नहीं कर रहा था। – Apogee

+0

मैं एक बड़ी परियोजना को .NET 4 को अपडेट करने के बाद इसमें भाग गया। यह एक ओआरएम लाइब्रेरी (एंटिटी स्पेस) था जिसे AllowPartiallyTrustedCallersAttribute से सजाया गया था। इसे टिप्पणी की और सब कुछ तय किया गया था। धन्यवाद! –

0

जाहिर है, एक संभावित वैकल्पिक हल जो कम से कम यह संभव बनाया मुझे विजुअल वेब डेवलपर में अनुप्रयोग आरंभ करने के लिए किया गया था इस:

  • तत्व है जहाँ से targetFramework = "4.0" विशेषता निकालें तत्व के भीतर स्थित है।

  • यदि यह सिल्वरलाइट एप्लिकेशन है तो एप्लिकेशन नाम पर क्लिक करें। वेब हेडर गुणों का चयन करें, फिर लक्ष्य ढांचे को 3.5 में बदलें। यदि यह एएसपीनेट एप्लिकेशन है तो शीर्ष प्रोजेक्ट हेडर पर क्लिक करें और गुणों का चयन करें और फिर लक्ष्य फ्रेमवर्क 3.5 पर सेट करें।

यह सब मेरे लिए पता चलता है उनके मेरी नेट 4.0 ढांचे स्थापना के साथ एक समस्या है। लेकिन जैसा कि मैंने स्थापित और अनइंस्टॉल किया है और फिर कम से कम दो बार नेट 4.0 फ्रेमवर्क स्थापित किया है, यह एकमात्र विकल्प है जिसे मैं इस बिंदु पर सोच सकता हूं।अगर कोई मुझे एक बेहतर प्रतिक्रिया/अधिक स्थायी समाधान प्रदान करता है जो मेरे लिए काम करता है तो मैं इसे उत्तर के रूप में चिह्नित करूंगा। इस बीच में मैं "अन्य ढांचे को स्थापित करना" लॉन्च करने और नेट 4.0 लक्ष्यीकरण पैक और नेट 4.0 रनटाइम दोनों को फिर से इंस्टॉल करने का प्रयास करूंगा, यह देखने के लिए कि यह काम करता है या नहीं।

2

आपको अपनी असेंबली इनफॉर्म्स फ़ाइल में निम्नलिखित जोड़ना पड़ सकता है ताकि शामिल असेंबली समान हों।

[assembly: SecurityTransparent()] 
+0

यह सिर्फ मेरे लिए काम किया। मेरे पास सी # क्लास लाइब्रेरी प्रोजेक्ट (नेट 4.0) और विंडोज फॉर्म वीबी प्रोजेक्ट है। मैंने सी # लाइब्रेरी प्रोजेक्ट में विधानसभाInfo.cs में "[असेंबली: सुरक्षा ट्रांस्पेरेंट()]" जोड़ा, और यह मुद्दा गायब हो गया। –

+0

मेरे लिए भी काम किया। Tnks। –

1

की सराहना मैं बहुत देर से पार्टी के लिए यहाँ हूँ लेकिन VS2013 और एक .NET 4.5.1 ClickOnce परियोजना के साथ एक ही मुद्दा पीड़ित में, मैं द्वारा इस समस्या का समाधान हो: परियोजना खुलने

  1. सवाल
  2. सुरक्षा टैब
  3. खुलने का विश्वास सेटिंग बदलने में ClickOnce परियोजना के गुण "यह एक आंशिक विश्वास आवेदन है"
  4. विश्वास सेटिंग वापस करने के लिए बदल रहा है करने के लिए "यह एक पूर्ण ट्रस्ट एप्लिकेशन है"

आशा है कि यह किसी और की मदद करेगी!

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