2010-11-08 15 views
9

मुझे अपने वेबपैप के साथ बहुत अप्रिय समस्या है।सी # टाइप ए को टाइप बी (अमान्य कैस्टएक्सप्शन) में नहीं डाला जा सकता है ... संदर्भ नरक?

एप्लिकेशन पालन बनाया गया है:
- जड़ अनुप्रयोग एक फ्लेक्स SWF, जो बारी में एक उप एप्लिकेशन (MagickECB) में एक 3 पार्टी फ्लेक्स SWF मॉड्यूल को लोड करता है लोड कर रहा है।
- दोनों Apps का संदर्भ Albums.dll, dll /bin और /MagickECB/bin और दोनों ऐप्स में पाया हिस्सा आईआईएस में एक ही आवेदन पूल।

EDIT: यह दो परियोजनाएं, रूट ऐप प्रोजेक्ट और सबैप प्रोजेक्ट है। सबैप परियोजना संदर्भ रूट ऐप प्रोजेक्ट।

जब जड़ एप्लिकेशन के फ्लेक्स आवेदन से उप एप्लिकेशन के फ्लेक्स मॉड्यूल लोड हो रहा है, हम बेतरतीब ढंग से पालन एक डाली त्रुटि मिलती है:

एक त्रुटि Photobook के विन्यास हो रही थी: [एक] Albums.LocalizationConfiguration को पर नहीं डाला जा सकता [बी] एल्बम। लोकलाइजेशन कॉन्फ़िगरेशन। \ WINDOWS \ Microsoft.NET \ फ्रेमवर्क \ वी 2: प्रकार ए 'एल्बम, संस्करण = 1.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = अशक्त' संदर्भ में 'डिफ़ॉल्ट' 'स्थान पर सी से निकलती है .0.50727 \ अस्थायी एएसपी.नेट फ़ाइलें \ magickecb \ 4414db97 \ 126f5aaf \ assembly \ dl3 \ cf281292 \ 4a6ecec8_8a7bcb01 \ एल्बम.DLL '। \ WINDOWS \ Microsoft.NET \ फ्रेमवर्क \ वी 2: प्रकार बी 'एल्बम, संस्करण = 1.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = अशक्त' संदर्भ में 'LoadFrom' 'स्थान पर सी से निकलती है .0.50727 \ अस्थायी एएसपी.नेट फ़ाइलें \ magickecb \ 4414db97 \ 126f5aaf \ assembly \ dl3 \ 017fab88 \ a91238d1_7977cb01 \ album.dll '। Albums.LocalizationConfiguration.GetConfig() Albums.CGlobal.GetUserLocale पर (स्ट्रिंग userHandle)

पर इस मामले की जांच करने की कोशिश कर, मैं पैदा कर रहा डाली त्रुटि दी

return (LocalizationConfiguration)ConfigurationManager.GetSection("Localization/Localization"); 
GetConfig विधि पता चला

Web.config में खंड पालन घोषित किया जाता है: (संपादित: जड़ एप्लिकेशन की web.config)

<sectionGroup name="Localization"> 
    <section name="Localization" type="Albums.LocalizationConfigurationHandler, Albums"/> 
</sectionGroup> 

मेरा अनुमान होगा कि GetSection के आंतरिक कोड "LoadFrom" संदर्भ में Albums.dll लोड करने के लिए और इसलिए/बिन पथ (see context problematics)

मैं में लोड मूल Albums.dll के साथ कोई विरोध के कारण की कोशिश करता है यह भी ध्यान रखें कि/dickickECB/Bin में अन्य dlls भी album.dll का संदर्भ देते हैं, इसलिए मैं सभी प्रोजेक्ट का पुनर्निर्माण करता हूं ताकि प्रत्येक DLL एल्बम के समान संस्करण को संदर्भित करे।dll

अंतिम, यदि आप अस्थाई फ़ाइलों में dll पूर्ण पथ की जांच एक्सटेंशन अलग (लोअरकेस बनाम अपरकेस) कर रहे हैं ..

कैसे इस समस्या को हल करने के लिए पर कोई इनपुट बहुत सराहना की जाएगी !!

उत्तर

10

जांच करें कि आपके संदर्भ, अगर आप अपने दो dll स्थानों की तुलना वे अलग हैं (छोटे अक्षर बनाम विस्तार अपर केस कोई मुद्दा नहीं है):

अस्थायी ASP.NET Files \ magickecb \ 4414db97 \ 126f5aaf \ विधानसभा \ DL3 \ cf281292 \ 4a6ecec8_8a7bcb01 \ Albums.DLL

अस्थायी ASP.NET Files \ magickecb \ 4414db97 \ 126f5aaf \ विधानसभा \ DL3 \ 017fab88 \ a91238d1_7977cb01 \ Albums.dll

शायद मतलब है कि आप कर रहे हैं दो भिन्न संदर्भ किराया फाइलें - शायद एक प्रोजेक्ट के रूप में संदर्भित करें और दूसरी फ़ाइल के रूप में सीधे। जब आप संदर्भों के संबंध में अपना वेब एप्लिकेशन बनाने का प्रयास करते हैं तो क्या आपके पास कोई चेतावनी है?

संपादित करें:__AssemblyInfo__.ini उपरोक्त फ़ोल्डरों में फ़ाइल आपको पथ प्रदान करेगी जिससे से एल्बम.dll की प्रतिलिपि बनाई गई थी।

+1

संकलन समय के दौरान कोई चेतावनी नहीं। मेरे पास दो परियोजनाएं हैं, रूट ऐप प्रोजेक्ट और सबैप प्रोजेक्ट। सबैप संदर्भ रूट ऐप प्रोजेक्ट। – Breakdown

+0

मैं album.dll के बारे में सोच रहा था - यह दोनों परियोजनाओं में संदर्भित कैसे है? क्या यह आपकी परियोजना है? – Mihailo

+0

हां, दोनों मेरी परियोजनाएं हैं। मैं प्रोजेक्ट रेफरेंसिंग के माध्यम से उप परियोजना में एल्बम.dll (जो रूट प्रोजेक्ट का आउटपुट है) का संदर्भ देता हूं। क्या आप यही जानना चाहते थे? (उप ऐप प्रोजेक्ट बिन में कोई सी/पी) – Breakdown

0

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