ASP.NET - IIS7 - Problème IBM DB2
Je suis en train de travailler sur un ASP.NET site web qui appelle une base de données DB2. J'ai Visual Studio est installé sur un Windows 2008 serveur où le site sera hébergé. Quand je debug le site dans Visual Studio, utilisant le serveur web intégré, je peux me connecter à la base de données et le site fonctionne très bien. Lorsque j'ai mis le site dans IIS7, sur le même serveur, je ne peux pas accéder au site ou de la base de données en raison de l'erreur suivante.
Voici les détails techniques:
Windows 2008 Server
IIS 7
Visual Studio 2010 Premium
DB2 v9.5.301.436
Could not load file or assembly 'IBM.Data.DB2' or one of its dependencies. An attempt was made to load a program with an incorrect format.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.BadImageFormatException: Could not load file or assembly 'IBM.Data.DB2' or one of its dependencies. An attempt was made to load a program with an incorrect format.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Assembly Load Trace: The following information can be helpful to determine why the assembly 'IBM.Data.DB2' could not be loaded.
WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
Stack Trace:
[BadImageFormatException: Could not load file or assembly 'IBM.Data.DB2' 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) +118
[ConfigurationErrorsException: Could not load file or assembly 'IBM.Data.DB2' 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) +11424435
System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +484
System.Web.Configuration.AssemblyInfo.get_AssemblyInternal() +127
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) +1167
[HttpException (0x80004005): Could not load file or assembly 'IBM.Data.DB2' or one of its dependencies. An attempt was made to load a program with an incorrect format.]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11556592
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +141
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4813333
Je ne comprends pas comment le site peut fonctionner correctement à l'aide de Visual Studio serveur web et ne pas travailler dans IIS. Je ne sais pas si c'est un problème IIS ou et le problème avec la version de IMB.Data.DB2.dll je suis en utilisant. Si quelqu'un a une solution ou des idées, ils seraient grandement appréciés.
Merci.
source d'informationauteur user718300 | 2011-06-29
Vous devez vous connecter pour publier un commentaire.
Pour faire ce travail, j'ai dû aller dans le Gestionnaire des services IIS, cliquez sur le nœud pool d'applications, cliquez sur le pool d'applications pour le site, puis cliquez sur paramètres avancés sur le côté droit de l'écran. Puis j'ai changé d'Activer les applications 32 bits true.
Cela a réglé mon problème et le site fonctionne correctement.
Pour une étrange raison de Visual Studio 2012 (et plus tard) toujours des copies de la version 32 bits de IBM.Data.DB2.dll pour votre dossier bin, même si ce n'est pas nécessaire parce que la DLL est enregistrée GAC lorsque DB2 Connect est installé.
La solution la plus simple est d'ajouter un post-build script pour supprimer les DLL à partir de votre dossier bin après chaque version. De cette façon, IIS seront en mesure de trouver la bonne version (si elle a besoin de la 32-bit ou 64-bit version dépend de vos paramètres de pool d'applications) dans le GAC.
Dans Visual Studio: cliquez droit sur la Référence en question et de changer Copie Locale de "Faux"
https://i.stack.imgur.com/y0Dre.png
Plus d'infos:
IBM DB2 question--Système.BadImageFormatException: impossible de charger le fichier ou l'assembly IBM.DB2.DLL ou une de ses dépendances
Cela ressemble à de la .Net framework version est mal dans votre domaine d'application. Dans le domaine d'application paramètres, assurez-vous que l' .Net framework version qui est sélectionné correspond à la version de votre IBM.Les données.DB2 assemblée.