2011-07-18 13 views
38

मुझे अपवाद फेंकने में एक असामान्य समस्या है "एक गलत प्रारूप के साथ प्रोग्राम लोड करने का प्रयास किया गया" त्रुटि? मेरे पास एक ही आईआईएस सर्वर पर दो समान वेबसाइटें हैं और मेरा निर्माण कॉन्फ़िगरेशन उनमें से एक के लिए काम करता है लेकिन दूसरे नहीं।आईआईएस 7.5 फिक्सिंग एक गलत प्रारूप समस्या के साथ एक प्रोग्राम लोड करने के लिए एक प्रयास किया गया था?

मेरा सी # एमवीसी 2 वेब ऐप दो वेबसाइटों पर तैनात किया जा सकता है जो एक ही आईआईएस 7.5 वेबसर्वर (x64) पर रहते हैं। एक लाइव साइट है (रिलीज कॉन्फ़िगरेशन का उपयोग करके तैनात), दूसरा बीटा साइट है (केवल इस प्रोजेक्ट के लिए बनाई गई एक नई बीटा कॉन्फ़िगरेशन का उपयोग करके तैनात)। दोनों परियोजनाओं के लिए कोडबेस एक ही है। उनके पास अलग-अलग बिल्ड कॉन्फ़िगरेशन हैं, लेकिन कॉन्फ़िगरेशन के अंदर सेटिंग्स समान हैं।

डिफ़ॉल्ट वेबसाइट/my_app पर रिलीज कॉन्फ़िगरेशन को तैनात करना पूरी तरह से काम करता है।

बीटा/my_app परिनियोजन के लिए बीटा कॉन्फ़िगरेशन को तैनात करना, लेकिन जब मैं साइट लोड करता हूं (कोई भी पृष्ठ) मुझे गलत प्रारूप अपवाद मिलता है।

मुझे समझ में नहीं आ रहा है कि एक ही कॉन्फ़िगरेशन सेटिंग्स के साथ तैनाती क्यों एक वेबसाइट के लिए काम करेगी, लेकिन एक और नहीं (उसी वेबसर्वर पर)। मेरा सर्वर + देव मशीन 64 बिट है, और दोनों वेबसाइटों में एक ही ऐप पूल सेटिंग्स (.NET 4, एकीकृत) है।

मैं इस समस्या को कैसे ढूंढ/ठीक कर सकता हूं? पसंदीदा रूप से प्रत्येक साइट के लिए अलग कॉन्फ़िगरेशन सेटिंग्स के बिना। और अधिमानतः रिलीज कॉन्फ़िगरेशन को बदलने के बिना, क्योंकि यह काम कर रहा है और मैं इसे बदलने का जोखिम नहीं लेना चाहता हूं।

दो वेबसाइटों हैं:

release build configuration

बीटा के लिए विन्यास प्रबंधक है ठीक उसी सेटिंग्स:

beta build configuration

Default Website/my_app 
Beta/my_app 

रिहाई के लिए विन्यास प्रबंधक इन सेटिंग है

अपवाद है:

Could not load file or assembly 'MyApp.Domain.Model' or one of its dependencies. 
An attempt was made to load a program with an incorrect format. 

Stack Trace: 

[BadImageFormatException: Could not load file or assembly 'MyApp.Domain.Model' or one of its dependencies. An attempt was made to load a program with an incorrect format.] 
    System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0 
    System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks) +567 
    System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +192 
    System.Reflection.Assembly.Load(String assemblyString) +35 
    System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +123 

[ConfigurationErrorsException: Could not load file or assembly 'MyApp.Domain.Model' or one of its dependencies. An attempt was made to load a program with an incorrect format.] 
    System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +11479520 
    System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +484 
    System.Web.Configuration.AssemblyInfo.get_AssemblyInternal() +79 
    System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +334 
    System.Web.Compilation.BuildManager.CallPreStartInitMethods() +280 
    System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +1087 

[HttpException (0x80004005): Could not load file or assembly 'MyApp.Domain.Model' or one of its dependencies. An attempt was made to load a program with an incorrect format.] 
    System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11612256 
    System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +141 
    System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4842149 

मैंने देखा है वहाँ इतना के बारे में "एक प्रयास गलत प्रारूप के साथ एक कार्यक्रम लोड करने के लिए बनाया गया था" पूछ पर कई सवाल कर रहे हैं, लेकिन मैं नहीं मानता कि इस डुप्लिकेट होने की है। यह एक अनूठी स्थिति है जिसमें कॉन्फ़िगरेशन एक साइट पर ठीक काम कर रहा है, लेकिन एक ही कॉन्फ़िगरेशन सेटिंग्स और दोनों के लिए एक ही वेबसर्वर का उपयोग करके दूसरे पर नहीं।

+0

क्या होता है आप कैसिनी के साथ इस चलते हैं तो? – Illuminati

उत्तर

71

मिले समस्या - समाधान तरह से है कि दो AppPools कॉन्फ़िगर किया गया है:

  • डिफ़ॉल्ट वेबसाइट/my_app DefaultAppPool उपयोग कर रहा है जहां 32-बिट अनुप्रयोगों को सक्षम
  • बीटा/my_app सही है -> BetaAppPool सक्षम 32-बिट अनुप्रयोगों का उपयोग कर रहा है FALSE

सत्य को 32-बिट अनुप्रयोगों को सक्षम करने के लिए BetaAppPool को बदलने से इस समस्या को ठीक किया गया है।

समाधान इस प्रश्न पर @Rick द्वारा पाया गया था: C# Entity Framework 4 Common Language Runtime detected an invalid program error?

+0

बस इस उत्तर में जोड़ने के लिए - मैं भी वेब ऐप के माध्यम से चला गया और यह सुनिश्चित किया कि यह 64 बिट पर चल सकता है, और उसके बाद 32-बिट अनुप्रयोगों को AppPools पर झूठी करने के लिए सक्षम करें - यह काम करता है और प्रदर्शन भी बेहतर है –

+0

धन्यवाद आप! मैं http://blogs.msdn.com/b/sayanghosh/archive/2007/04/21/solution-to-could-not-load-file-or-assembly-or-one-of-its- निर्भरता-access-is-den.aspx लेकिन यह पता चला कि यह सिर्फ यह सेटिंग थी ... धन्यवाद! – juFo

3

आपके x64 परिनियोजन स्थान में आपके पास x86 dll गिरा दिया गया है।

ऐसा मत करो। यह काम नहीं करता है।

+0

तो यह मेरे रिलीज बिल्ड कॉन्फ़िगरेशन के लिए क्यों काम करता है जो सटीक उसी x64 विंडोज 2008 सर्वर पर तैनात है? –

+0

मुझे नहीं पता कि आपने अपनी कॉन्फ़िगरेशन के साथ क्या किया है, लेकिन यदि आप बाइनरी के माध्यम से जाते हैं तो आप पाएंगे कि आप वहां गलत बाइनरी छोड़ने में कामयाब रहे हैं। – Joshua

+0

@ जोशुआ मुझे कैसे पता चलेगा कि 'x64 परिनियोजन स्थान' कहां है? – Lijo

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