Question

OK, ça commence à me rendre fou. J'ai une application web asp.net. Assez simple, la plupart du code dans le fichier .aspx.vb et quelques classes dans App_Code.

Le problème, qui a commencé à se produire seulement aujourd’hui (même si la plupart du code était déjà écrit), est que de temps en temps, j’ai le message d’erreur suivant:

  

Erreur BC30002: le type ‘XXX’ n’est pas défini

L'erreur se produit à chaque fois que je modifie les fichiers du dossier App_Code. EDIT: OK, cela se produit même si je ne touche rien pendant un moment, puis actualise la page. J'essaie toujours de comprendre exactement comment déclencher cette erreur.

Je dois juste attendre un peu sans rien toucher, puis rafraîchir la page et cela fonctionne, mais c'est très ennuyant.

J'ai donc cherché un peu, mais rien n'a été ajouté, à l'exception des importations manquantes. Une idée?

Était-ce utile?

La solution 2

Je pense avoir trouvé le problème.

Mon code était comme ça:

Imports CMS

Sub Whatever()
    Dim a as new Arbo.MyObject() ' Arbo is a namespace inside CMS
    Dim b as new Util.MyOtherObject() ' Util is a namespace inside Util
End Sub

Je ne sais pas pourquoi je l'ai écrit comme ça, mais il s'avère que le fait d'appeler des classes sans appeler leur espace de noms entier ni importer leur espace de noms entier a été à l'origine de l'erreur.

Je l'ai réécrit comme ceci:

Imports CMS.Arbo
Imports CMS.Util 

Sub Whatever()
    Dim a as new MyObject()
    Dim b as new MyOtherObject()
End Sub

Et maintenant ça marche ...

Autres conseils

Cela ressemble à un problème de pré-compilation, en particulier parce que vous indiquez que vous obtenez l'erreur, puis attendez et elle disparaît. ASP.NET est peut-être encore en train de compiler dynamiquement votre application ou a compilé les types dans différents assemblys.

Avec la compilation dynamique, il n’est pas garanti que différents fichiers codebehind soient compilés dans le même assemblage. Il est donc possible que le type que vous référencez ne puisse pas être résolu dans son assembly précompilé.

Essayez d’utiliser le " @ référence " directive pour indiquer au moteur d'exécution que votre page et le fichier contenant votre type doivent être compilés dans le même assemblage.

@ Référence - MSDN

Cela m'est arrivé après avoir ajouté un nouveau projet à une ancienne solution. J'ai abaissé le cadre Target pour correspondre à celui des autres projets 'plus anciens' et l'erreur a disparu.

On dirait que cela se produit chaque fois que le site Web se lance (l'application est recyclée chaque fois que vous touchez app_code et IIS est probablement configuré pour fermer le site Web après X minutes d'inactivité).

Je parie que cela a quelque chose à voir avec le processus de travail asp.net ne disposant pas des droits d'accès corrects sur le serveur. Donc, il essaie de charger un assemblage et est refusé.

Cliquez sur ce lien et sur le tableau 19.3 pour obtenir une liste complète. les dossiers auxquels le compte de processus de travail doit avoir accès pour fonctionner. Et n'oubliez pas de lui donner les droits sur tous les fichiers et dossiers de votre répertoire virtuel!

Remplacez les fichiers vbproj et vbproj.user de votre sauvegarde avant si les références sont égales

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top