2014-08-28 9 views
6

Capisco che ci sono molti di questi post in giro e di cui mi sono occupato da solo prima senza nessun problema tranne questa volta. È perché non riesco a ottenere le informazioni di debug di cui ho bisogno da Windows Azure e sperando che qualcuno possa essere in grado di aiutarmi.Impossibile caricare il file o l'assemblaggio ... Sito Web di Windows Azure

Tutto questo funziona perfettamente nel mio ambiente locale, debug versione &.

Ho ricevuto questo errore: Impossibile caricare il file o l'assembly "Lib" o una delle sue dipendenze. Si è tentato di caricare un programma con un formato errato.

Lib esiste nella directory, dipende solo da System.Drawing & mscorlib.

Generalmente, mi limiterò a collegarmi a AppDomain.Current.AssemblyResolve oa controllare l'eccezione quando viene lanciata. Non sono in grado di farlo con Azure perché l'eccezione si verifica durante il caricamento del preload.

[BadImageFormatException: Could not load file or assembly 'Lib' 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, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0 
    System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34 
    System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152 
    System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77 
    System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16 
    System.Reflection.Assembly.Load(String assemblyString) +28 
    System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38 

[ConfigurationErrorsException: Could not load file or assembly 'Lib' 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) +736 
    System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +217 
    System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130 
    System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170 
    System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +91 
    System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +284 
    System.Web.Compilation.BuildManager.ExecutePreAppStart() +153 
    System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +521 

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

C'è un modo per sovrascrivere/creare il caricatore di assembly personalizzato per intercettare questo problema?

Sono a una perdita completa.

Grazie

Steve

risposta

7

Odio quando faccio questo. Posta una domanda su SO perché ho provato tutto il giorno, quindi ho risolto il problema 10 minuti dopo.

Quindi sembra che mi sia sfuggito un pezzo di informazione chiave che avrebbe aiutato molto.

BadImageFormatException

presente (per quanto ne so) viene generata quando ci sono problemi con la compatibilità della piattaforma (architettura) (x86, x64). Tutti i miei progetti sono stati compilati per "Qualsiasi CPU" (può essere trovato nelle proprietà del progetto> Build> Platform Target, VS2013).

Tuttavia, il mio progetto "Lib" è stato creato solo per x64 e il sito Web di Azure era in esecuzione in modalità a 32 bit, quindi non è stato possibile caricare la DLL a 64 bit.

due opzioni:

  1. compilare la DLL "Lib" come AnyCPU o 32bit poi ri-pubblicano
  2. Passare il sito web azzurro a 64 bit.

Non ho optato per l'opzione 2 a causa di ciò che la DLL "Lib" mi serve come 64 bit.

Così, per riferimento futuro se qualcun altro ha qualcosa di simile, controllare quanto segue:

  1. piattaforma Azure sito web (trovati in Configura> Piattaforma, sul vecchio portale)
  2. controllare tutti i progetti di sono impostati per qualsiasi CPU o "Piattaforma (architettura) compatibile"

Spero che questo aiuti qualcun altro.

Grazie

Steve

EDIT: Se qualcun altro ha delle informazioni più utili da aggiungere per le persone in futuro che potrebbe avere questo problema, si prega di fare.

Problemi correlati