2009-11-18 15 views
0

Je rencontre un échec étrange lorsque j'essaie d'afficher mon site Web sous IIS. Si je crée une nouvelle application de site web ASP.Net, ne modifiez pas du tout et l'exécuter (F5) la page Web apparaît avec l'erreur:Erreur étrange GAC dans l'application ASP.Net

Compilation Error 
Description: An error occurred during the compilation of a resource required to 
service this request. Please review the following specific error details and modify 
your source code appropriately. 

Compiler Error Message: CE29: (CE29) Unable to load assembly C:\Windows\assembly\GAC_64 
\System.EnterpriseServices\2.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.dll Not 
a valid .NET executable (Offset and length were out of bounds for the array or count 
is greater than the number of elements from index to the end of the source collection.) 

Il ressemble à un problème de configuration .Net mais Je ne sais pas comment le réparer. J'ai .Net 3.5 SP1 installé et IIS 7.0, fonctionnant sur Vista Home Premium 64-bit. Le site Web est créé à l'aide de Delphi Prism, qui s'exécute dans le Visual Studio Shell 2008. J'ai googlé et googlé et googlé mais rien. Toute aide grandement appréciée!

Répondre

0

S'il vous plaît vérifier les références de votre projet. Voulez-vous référencer System.EnterpriseServices? Si vous ne regardez pas le fichier machine.config. Peut-être que l'assemblée est référencée là?

1

Ajouter System.EnterpriseServices (C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG) dans votre référence résoudra votre problème.

OU

Supprimer la référence de web.config Si vous n'utilisez pas cela.

+0

Merci d'avoir répondu tous les deux. Il a été référencé dans le projet, donc je l'ai supprimé, toujours la même erreur. Puis j'ai ajouté la ligne suivante à machine.config, n'a pas non plus aidé: Au moins cela fonctionne dans le serveur de développement de cassini. –

0

Vous pouvez essayer de supprimer les références à cette DLL, mais Prism mettre probablement là pour une raison. Il existe plusieurs raisons possibles. Vous avez peut-être spécifié un support de transaction au niveau de la page ou vous utilisez COM interop. Vous pouvez déterminer la raison en supprimant la référence temporairement et en effectuant une reconstruction complète pour voir ce dont le compilateur se plaint.

Quelle que soit la raison, si vous trouvez que vous avez encore besoin cette assemblée, vous aurez juste pour obtenir le droit au bon endroit pour que IIS peut le charger.

Essayez d'ouvrir le GAC dans l'explorateur de Windows. Je ne suis pas en cours d'exécution Vista, alors portez-moi si vos démarches diffèrent de la mienne. Slick START, puis tapez c: \ windows \ assembly. Vous aurez évidemment besoin d'une autorisation pour voir/gérer ce dossier. Trouvez l'assemblage en question et regardez les versions disponibles. Il semble que le sous-système .NET essaie de traiter votre application en tant que 64 bits et nécessite une version 64 bits de cet assembly.

Si vous ne voyez pas l'ensemble approprié dans le GAC (vous verrez probablement d'autres versions), puis qui explique probablement. Je ne suis pas sûr de la solution, mais deux choses que je pourrais essayer sont de vous assurer que vous avez une version 64 bits de la DLL sur votre système quelque part et essayez de l'installer dans le GAC en utilisant GACUtil/i . Vous pouvez également essayer de reconfigurer ASP.Net pour IIS en utilisant aspnet_regiis.exe -i.