2009-11-03 3 views
2

J'ai un site Web qui a 2 fichiers comme suit:page classe en dehors de App_Code ne compilera pas

  • page.aspx
  • page.aspx.cs

Il fut un temps que Je pourrais juste déposer de nouveaux fichiers sur le serveur Web et IIS compilerait automatiquement les fichiers et je pourrais accéder à la page par exemple

http://www.website.com/page.aspx

... et la fonctionnalité associée à la classe de page contenue dans le fichier .cs fonctionnerait bien.

Maintenant j'obtiens l'erreur: "Impossible de charger le type namespace.classname" qui fait référence à ma classe de page.

Maintenant, pour une raison étrange, je dois mettre tous mes fichiers .cs, même les classes de pages dans le dossier app_code. Tout ce qui a changé sur mon site web, c'est que j'ai réorganisé la structure de façon à ce qu'au lieu que mes pages soient sur la racine du web, elles sont maintenant à http://.../newfolder/page.aspx.

Pour une raison quelconque, tous mes fichiers page.aspx.cs doivent maintenant être dans app_code.

Des idées?

+0

Pouvez-vous poster du code? –

+0

N'utilisez-vous pas Visual Studio pour gérer votre projet Web? On dirait que quelque chose comme ça aurait peu de chances de se produire si vous l'êtes. – JoshMock

+0

Oui en utilisant VS. Ce que nous avons trouvé, c'est que les fichiers téléchargés à partir de mon PC fonctionnent bien. Cependant, les fichiers qui sont exactement les mêmes téléchargés de mes collègues PC ne fonctionnent pas. Ses fichiers, doivent toujours avoir le fichier .cs mis dans le dossier app_code! Même les fichiers très basiques avec juste un response.write dans le pageload ne fonctionneront pas. Chaque fois qu'il télécharge des fichiers sur le serveur, ils ne fonctionnent que si le fichier .cs est placé dans app_code. – Remotec

Répondre

2

Vous semblez mélanger un projet d'application Web et un site Web. Etes-vous sûr que les fichiers sont exactement les mêmes? Peut-être une directive @Page dit CodeBehind = Page.aspx.cs et l'autre dit CodeFile = Page.aspx.cs? CodeBehind nécessite la compilation de projet, de sorte que vous ne pouvez pas simplement déposer dans un nouveau fichier .cs, vous devez télécharger une nouvelle DLL compilée. CodeFile permettra la compilation dynamique.

Le répertoire App_Code est dynamiquement compilé (dans les deux cas) lors de l'accès à votre application. Par conséquent, la directive Inherit a un type valide lorsque vous y placez le fichier. En général, ne faites pas cela. Vous voulez que le fichier .cs soit associé au fichier .aspx. Utilisez App_Code pour la logique métier ou les classes d'utilitaires qui ne sont pas associées à une page particulière.

Enfin, ce nouveau sous-répertoire est-il configuré en tant que nouvelle application dans IIS? Que change le fichier web.config dans votre nouveau répertoire? Courez-vous la même version d'ASP.NET? Vérifiez la balise "compilation". Je ne suis pas sûr de ce que vous pourriez faire pour causer cela, mais je suis sûr que vous pourriez causer certains chaos.

Questions connexes