2011-05-06 3 views
1

mon scénario est le suivant (Win7, VS2010, .NET 4.0):BadImageFormatException dans WCF Contexte

J'ai un ensemble de .NET à partir d'une société externe compilé pour "Any CPU" (vérifié avec corflags.exe). Cet assembly charge également une DLL native de la société externe. Cette DLL native existe en deux versions: x86 et x64. J'ai les deux disponibles. Lorsque je crée une application console, ajoutez l'assembly .NET (tout en vérifiant que l'une des DLL natives peut être trouvée par l'assembly .NET), créez une instance de l'une des classes à partir de cette bibliothèque .NET et commencez le programme tout va bien.

Toutefois, lorsque je suis exactement les mêmes étapes dans un service WCF, j'obtiens une exception BadImageFormatException. Maintenant, la chose évidente est la recherche de l'erreur dans la plate-forme ciblée (j'ai essayé "Any CPU", "x86", "x64") ou essayer d'échanger la DLL native (j'ai essayé x86 et x64), mais cela n'aide pas . J'ai essayé toutes les combinaisons ...

Quelqu'un at-il une idée de ce que le problème pourrait être?

Lars

P.S .: J'ai lu BadImageFormatException encountered with WcfSvcHost and IIS WCF host et que l'auteur affirme qu'il a résolu un problème similaire en corflagging WcfSvcHost.exe comme 32BIT, mais WcfSvcHost.exe est fort nommé je ne peux pas démissionner il. Vous ne savez pas comment il a fonctionné ...

Répondre

1

Vous pouvez supprimer la dépendance sur WcfSvcHost et héberger/déboguer le service dans un IIS local où vous pouvez définir explicitement AppPool sur 32 ou 64 bits. C'est ce que je ferais.

+0

Oui, c'est une solution de contournement et fait l'affaire pour moi, thx! Intéressant cependant que je ne peux pas obtenir ceci pour fonctionner avec WcfSvcHost ... – larsbeck

+0

Quelqu'un peut-il jeter plus de détails à ce sujet? Je ne pouvais pas trouver où changer ce paramètre AppPool. Dans mon Gestionnaire des services Internet, accédez à Paramètres avancés, voir Pool d'applications avec DefaultAppPool sélectionné. Mais les trois autres options sont: Classic .NET AppPool, ASP.NET v4.0, ASP.NET v4.0 Classic. Alors, lequel veut dire 32 ou 64? – newman

Questions connexes