2013-02-20 28 views
11

मुझे अपने वेब एप्लिकेशन पर कभी-कभी निम्न त्रुटि (यादृच्छिक रूप से) फसल को देख रहा है। हम विंडोज सर्वर 2008R2, आईआईएस 7.5, एमवीसी 3, .NET 4.5 चला रहे हैं।समय-समय पर एएसपी.NET त्रुटि CS0656 देख रहा है: गायब कंपाइलर आवश्यक सदस्य

Compiler Error

यह वही त्रुटि हर समय आ गया है: CS0656: लापता संकलक आवश्यक सदस्य 'Microsoft.CSharp.RuntimeBinder.Binder.BinaryOperation'

जब यह त्रुटि तब होती है, यह एक से कुछ भी ले जा सकते हैं इसे ठीक करने के लिए, हमारे एप्लिकेशन के पुन: इंस्टॉल करने के लिए, एप्लिकेशन पूल को पुनरारंभ करें।

त्रुटि नई ब्रांड वीएम छवियों (हमारे सॉफ़्टवेयर की पिछली स्थापना) पर नहीं होती है, साथ ही साथ मशीनें जिन पर पहले हमारे सॉफ़्टवेयर इंस्टॉल किए गए थे। त्रुटि एप्लिकेशन के पहले भाग पर हो सकती है, या जब एप्लिकेशन आईआईएस एप्लिकेशन पूल के लिए कार्यकर्ता प्रक्रिया को रीसायकल करने के लिए पर्याप्त समय तक बैठता है (ऐसा लगता है)।

यह वास्तव में मुश्किल हो रहा है, क्योंकि मैंने इस त्रुटि पर शोध का एक टन किया है, और बिना किसी किस्मत के कई समाधानों की कोशिश की है। साथ ही, यादृच्छिक आवृत्ति जिस पर त्रुटि होती है, ने समस्या निवारण के लिए बहुत कठिन बना दिया है। इस मुद्दे में कोई अंतर्दृष्टि, या संभावित समाधानों पर विचारों की सराहना की जाएगी। मैं इस बिंदु पर लगभग कुछ भी करने की कोशिश कर रहा हूं।

+0

1) क्या आप अपने परीक्षण वीएम में से एक डीबगर संलग्न कर सकते हैं और इसे क्रैश कर सकते हैं? 2) क्या आप डीएलआर का उपयोग कर रहे हैं? बीसीएल स्रोत और दस्तावेज़ीकरण के माध्यम से देखते हुए, ऐसा लगता है कि प्रकार का नाम गतिशील संचालन से जुड़ा हुआ है। या शायद यह एमवीसी का डीएलआर का उपयोग है? –

+0

क्या आप जांच सकते हैं कि माइक्रोसॉफ्ट का कौन सा संस्करण .CSharp.dll का उपयोग किया जाता है (प्रोसेक्सपी जैसे टूल के साथ पथ निर्धारित करें), इसे .NET Reflector जैसे टूल का उपयोग करके खोलें और बाइनरीऑपरेशन स्टेटिक विधि जांचें? यह एक संस्करण समस्या हो सकती है (संकलक Microsoft.CSharp.dll का एक नवीनतम संस्करण अपेक्षा करता है) –

+0

क्या आप सी # गतिशील भाषा सुविधाओं का उपयोग कर रहे हैं? और वैसे भी ऐसा लगता है कि एक सीएलआर दूषित है। –

उत्तर

0

Try Forest Cheng Answer:

कौन-सा संस्करण अपने .नेट फ्रेमवर्क है? एएसपी.नेट एमवीसी 3 रन-टाइम घटकों को .NET Framework संस्करण 4 और विजुअल स्टूडियो 2010 या विजुअल वेब डेवलपर 2010 एक्सप्रेस की आवश्यकता होती है। अधिक जानकारी चाहते हैं, कृपया ASP.NET MVC 3 Release Notes देखें।

कंपाइलर त्रुटि CS0656 समस्याओं पालन के कारण हो सकते हैं:

  1. आम भाषा क्रम की आपकी स्थापना दूषित है।

  2. आपके पास एक असेंबली का संदर्भ है जो सामान्य भाषा रनटाइम में भी एक प्रकार को परिभाषित करता है। हालांकि, आपकी असेंबली के प्रकार को सी # कंपाइलर की अपेक्षा के तरीके से परिभाषित नहीं किया गया है।

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

0

हम: यदि मैं corectly याद मैं बिन निर्देशिका हटा सकते हैं और पुनर्निर्माण क्योंकि DLLs के पुराने संस्करणों के आसपास चल रहे थे करने के लिए था और इस वर्ग के .net 4.0

में पेश किया गया था कुछ शोध करने के बाद, इस साइट सहमत करने लगता है इन संकलन त्रुटियों को लंबे समय से पहले दिन में पहले और बाद में यादृच्छिक रूप से वापस आने के लिए उपयोग किया जाता था। इसके लिए अस्थायी एएसपीनेट फ़ोल्डर की सामग्री को हटाना आवश्यक था, और एक दृश्य स्टूडियो कैश के अंदर भी लटक रहे अन्य दुष्ट डीएलएस ढूंढना आवश्यक था। सामान्य रूप से, अस्थायी asp.net फ़ोल्डर को फ़्लश करने से यह किया जाएगा।

सुनिश्चित करें कि आप सभी डीएलएस - बिन फ़ोल्डर को भी स्पष्ट रूप से पाते हैं, और याद रखें कि डीएलएस को छाया निर्देशिका से निष्पादित किया जाता है।यही कारण है कि मुझे याद है (एक लंबी दूरी की स्मृति से भी) कि डिफ़ॉल्ट ऐपडोमेन से कनेक्शन है जो असेंबली लोड हो जाती है, खासकर यदि आप फिर "एक ही असेंबली" लोड करते हैं लेकिन एक अलग फ़ाइल स्थान से लोड करते हैं।