2009-02-18 3 views
2

Nous installons une application tierce dans l'un de nos serveurs Windows 64 bits. Cette application a apparemment été compilée avec l'option du compilateur définie pour choisir la plate-forme lors de l'exécution. Quand nous courons l'application, il nous donne une erreur:Comment exécuter une application .NET 32 bits sur un serveur Windows 64 bits?

System.BadImageFormatException: is not a valid Win32 application. 

Je l'ai vu dans les forums MSDN que pour corriger cette erreur, je dois construire l'ensemble à 32 bits application et de cette façon, il fonctionnera bien sur un serveur 64 bits. Je vérifie sur les autres liens StackOverflow Other Posts.

Comment contourner cette situation? Pour tous ceux qui souhaitent en savoir plus:

  1. L'application fonctionne correctement sur un serveur de test 32 bits.
  2. IIS version 6
  3. en utilisant SQL Server Express 2005
  4. Sur la, il y a deux Framework64 Extension du service Web \ v2.0.50727 \ aspnet_isapi.dll
  5. et Framework \ v2.0.50727 \ aspnet_isapi.dll

Répondre

4

Une possibilité est que l'application dépend d'une DLL non managée qui doit être exécutée en mode 32 bits. Comme la version "AnyCPU" .NET par défaut vérifie automatiquement la plate-forme, la partie .NET du programme démarre en mode 64 bits. Cela provoquera l'échec des appels à la DLL non gérée 32 bits uniquement. Pour corriger cela, vous devez créer un fichier manifeste pour indiquer à l'application de s'exécuter en mode 32 bits. Je n'ai jamais eu besoin de le faire moi-même, donc je ne peux pas donner d'instructions et une recherche rapide sur Google n'a pas (encore) trouvé quelque chose.

[Mise à jour]
Voir si ce lien aide:
http://msdn.microsoft.com/en-us/library/aa374191.aspx

+0

Les manifestes ne sont pas présents dans le dossier wwwroot. Peut-être à des fins de sécurité. Peut-être que je ne peux pas les trouver. – Geo

+0

Il n'y a peut-être pas encore de manifeste, vous devrez peut-être le créer. –

-1

Les détails de la question est peu déroutant mais je vais prendre un botté de dégagement.

Vous devez la aspnet_regiis.exe version trouvée dans le Framework \ v2.0.50727 \ dossier contre le site Web où ce code est en cours d'exécution

-1

Une chose qui pourrait fonctionner fait que l'application .Net est signalé comme une vraie application 32 bits en changeant les détails de la CPU cible.

Dans le Visual Studio 2005 vous pouvez le faire en allant au projet Propriétés et dans la Construire section définir la cible plate-forme -x86 et non Tout APU qui est la valeur par défaut .

+0

Cela n'aide pas quand il s'agit d'une application tierce - il ne peut pas être construit avec Visual Studio. –