2013-02-08 26 views
6

मैं कई मौजूदा पुस्तकालयों का उपयोग कर विंडोज 8 64 बिट मशीन पर एक वेब अनुप्रयोग पर काम कर रहा हूं। मैं एक देशी डीएलएल संदर्भित दो सी # डीएलएल का उपयोग करना चाहता हूं। सी # डीएलएल दोनों 64 बिट उपयोग के लिए संकलित किए गए हैं और परीक्षण अनुप्रयोगों में परीक्षण किए गए हैं। मेरा वेब एप्लिकेशन सी # डीएलएल दोनों का संदर्भ देता है और आईआईएस 8 पर चलने वाला है। मैंने दो सी # डीएलएल परियोजना के संदर्भ के रूप में और देशी डीएलएल को मैन्युअल रूप से वेब ऐप के बिन फ़ोल्डर में जोड़ा। जब भी मैं समाधान बनाता हूं और चलाता हूं, मुझे शीर्षक में दिखाया गया अपवाद मिलता है। मुझे पता है कि यह 32 बिट और 64 बिट कोड के संबंध में एक समस्या के लिए एक समस्या है। इसलिए मैंने सभी अलग-अलग बिल्ड कॉन्फ़िगरेशन की कोशिश की लेकिन नतीजा कभी नहीं बदला।BadImageFormatException: फ़ाइल या असेंबली लोड नहीं हो सका ... खराब प्रारूप - केवल वेब अनुप्रयोग के साथ

मैंने वेब ऐप में जो भी कोशिश कर रहा हूं, वैसे ही एक कंसोल एप्लिकेशन बनाया है और यह बेकार ढंग से काम करता है। सटीक उसी सेटिंग के साथ वेब एप्लिकेशन अपवाद फेंकता है, यह वास्तव में मुझे भ्रमित कर रहा है।

क्या मैं अब तक की कोशिश की:

  • आवेदन बदलें पूल किसी भी सीपीयू के साथ
  • बिल्ड सभी DLLs "32-बिट अनुप्रयोगों को सक्षम करने के लिए" की स्थापना, 64 बिट या 86 लक्ष्य
  • सभी की corflags की जाँच करें डीएलएल

मैं इस कॉन्फ़िगरेशन को चलाने में मेरी सहायता करने के लिए तैयार सभी को इस परियोजना का निर्यात प्रदान कर सकता हूं!

मैं वास्तव में हर मदद की सराहना करता हूं!

+0

क्या आपके पास अभी तक कोई समाधान है?क्योंकि हम भी एक ही समस्या का अनुभव करते हैं, और हमें अभी तक एक कार्य समाधान नहीं मिला है। –

+0

हाय सईद, मेरे देर के उत्तर के लिए खेद है। चूंकि मेरी परियोजना एक वेब ऐप थी, इसलिए मैंने एक वेब सेवा के रूप में दूसरा वेब एप्लिकेशन बनाने का निर्णय लिया जो आरईएसटी के माध्यम से मूल डीएलएल की कार्यक्षमता को बनाता है। मुझे समस्या का कोई अन्य समाधान नहीं मिला। – JZet

उत्तर

0

मुझे लगता है कि आपने लक्ष्य प्लेटफ़ॉर्म (प्रोजेक्ट गुणों में बिल्ड विकल्प) सेट करने का प्रयास किया है? इसके अलावा, इस आलेख पर एक नज़र डालें: http://www.codeproject.com/Articles/383138/BadImageFormatException-x86-i-x64

+1

हाय एरकन, हाँ मैंने सभी अलग-अलग लक्ष्य प्लेटफॉर्म सेटिंग्स की कोशिश की। आपके द्वारा लिंक किया गया आलेख दुख की बात नहीं करता है क्योंकि वास्तव में corflags अप्रबंधित डीएलएस के साथ काम नहीं करता है: / – JZet

0

मुझे अपने आवेदन पर एक ही समस्या मिली। यह निम्नलिखित करने के बाद तय किया गया था:

* मेरे वेब साइट फ़ोल्डर में "बेनामी" उपयोगकर्ता के लिए अनुदान अनुमति।
* ".NET v4.5 क्लासिक" से ".NET v4.5" में एप्लिकेशन पूल बदलना।

0

मैं जो कुछ भी लोड नहीं कर रहा हूं, यह निर्धारित करने में कुछ मदद कर सकता हूं। यदि यह एक dev सर्वर है तो Fusion Log Viewer का उपयोग करने के लिए उपयुक्त एसडीके स्थापित करना उपयोगी हो सकता है। यदि यह एक विकल्प नहीं है आप के रूप में इस रजिस्ट्री से विधानसभा बाध्यकारी लॉगिंग चालू कर सकते हैं:

Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion] 
"LogFailures"=dword:00000001 
"LogPath"="c:\\bindFailureLogs\\" 

बस इसे बंद करना पड़ा काम पूरा हो जाने के लिए सुनिश्चित हो, वहाँ विधानसभा बाँध प्रवेश का उपयोग कर निष्पादन दंड है । सुनिश्चित करें कि रजिस्ट्री कुंजी दर्ज करने से पहले फ़ोल्डर मौजूद है और लॉगिंग शुरू करने के लिए एप्लिकेशन के एप्लिकेशन पूल को रीसायकल करें। यह आपको एक डीएल (या निर्भरता के बारे में एक विस्तृत सूची प्रदान करेगा क्योंकि यह निर्भरता या त्रुटि संदेश में सूचीबद्ध डीएलएल हमेशा लोड नहीं होता है) लोड नहीं किया गया था और जहां से इसे लोड करने का प्रयास किया गया था।

समस्या को ठीक करने वाले अनुप्रयोगों के आपके विभाजन से पता चलता है कि विभिन्न संस्करणों को लक्षित करने वाले असेंबली पर कई निर्भरताएं हैं और चूंकि एक असेंबली का केवल एक संस्करण ऐप डोमेन में लोड किया जा सकता है, तो कुछ निर्भरता संतुष्ट नहीं हो रही है। प्रबंधित असेंबली के लिए आप assembly binding redirect का उपयोग कर सकते हैं, लेकिन मुझे नहीं पता कि इसका अप्रबंधित समतुल्य क्या होगा यदि यह भी मौजूद है।

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