Mes modifications ASP.NET App_code ne sont pas récupérées (ou sont mises en cache ??)

Aidez-moi!! J’ai un seul fichier .cs dans un répertoire App_Code (au niveau racine) dans le but de récupérer le modèle correct pour l’URL demandée (il est lié à notre propre firebase database Content Management). Au début, cela fonctionnait bien – je pouvais y apporter des modifications et elles ont été détectées par l’application Web, OK. Puis quelque chose est arrivé (je ne sais pas quoi) et maintenant, quels que soient les changements que je fais, ils ne sont pas reconnus. Même si je supprime l’intégralité du répertoire App_Code, cela ne fait aucune différence – je semble toujours récupérer une version antérieure (mise en cache ??) de ce qui se trouvait dans le répertoire App_Code. Le code dans le fichier .cs est ci-dessous:

using System; using Custom.CMS.Facade; using Custom.CMS.BO; public class CMHttpModule : IHttpModule { code here... } 

Le même problème se produit même après que j’ai copié le site Web sur notre serveur en direct.

Ce que je ne comprends pas, c’est – si j’inscris délibérément une erreur dans le code .cs, j’obtiens toujours une erreur de compilation et lorsqu’une compilation réussie, un App_Code.xxxx.dll est créé sous C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Fichiers ASP.NET temporaires

Alors, quelle version de App_Code mon application Web est-elle en train de prendre? Comment puis-je le faire choisir le “correct”?

Pour info, j’utilise C #, Visual Web Developer Express 2008 et le serveur Web IIS 6

Toute aide serait grandement appréciée.

La réouverture de la solution fonctionne également.

Pouvez-vous cliquer avec le bouton droit sur le fichier, accéder aux propriétés et vérifier l’action de construction. Il doit être réglé sur ‘Comstackr’.

Je ne sais pas exactement comment vous publiez votre application Web, mais vous pouvez essayer quelques solutions:

  • Comme indiqué précédemment, vérifiez que vous utilisez des références de projet plutôt que des références de fichier pour les DLL créées à partir de vos propres projets C #. Vérifiez également que l’action de App_Code votre fichier .cs dans le répertoire App_Code est définie sur Comstack
  • Vérifiez que tous les projets ciblent le même framework .NET: v2.0, v3.5, v4.0 ou v4.5. Vous pouvez vérifier cela dans l’onglet Application des Properties de chaque projet. N’utilisez pas la variante de profil client.
  • Dans votre code source, supprimez vos DLL générées (généralement celles des dossiers bin et obj), puis utilisez Visual Studio pour effectuer une génération complète. C’est l’équivalent d’une reconstruction (lire: Nettoyer puis Construire). Ensuite, publiez sur votre serveur Web.
  • Au risque d’indiquer une évidence, assurez-vous que le cache du navigateur Web que vous utilisez pour afficher votre site a été effacé avant de cliquer sur le site.

J’espère que cela t’aides.

EDIT: Je viens de penser soudain: cette application Web ASP.NET est-elle en réalité un site Web ? Si tel est le cas, vos modifications de code risquent de ne pas être reconnues par le compilateur ASP.NET car “si un fichier de code n’est pas référencé, il n’est pas compilé”.

La principale différence entre un site Web ASP.NET et une application Web ASP.NET est que le premier est généralement compilé de manière dynamic (automatiquement) par ASP.NET sur le serveur la première fois qu’une demande est reçue après l’installation ou la mise à jour du site. , alors que ce dernier est entièrement compilé dans des DLL avant même d’être publié. Vous pouvez en savoir plus à ce sujet dans les liens ci-dessus.

J’ai eu le même problème hier et je l’ai corrigé en m’assurant que les références des bibliothèques de classes sur le projet de site Web pointent sur vos projets de bibliothèques de classes (pas les dll dans le dossier bin).

Il semble que le site Web cible .net 2.0 et que les bibliothèques de classes se trouvent dans .net 3.5. Le projet de site Web a en quelque sorte ignoré les dll reconstruites et utilisé celles du dossier bin du projet de site Web.

@SeanW –

1) Avez-vous essayé de modifier votre Web.Config au lieu de le supprimer directement? Web.Config est mis en cache, mais toute révision de celui-ci doit recycler votre cache d’applications.

2) Avez-vous essayé de supprimer tout votre site et de le copier à partir de zéro? (Assurez-vous en particulier de supprimer et de recopier tous les fichiers précompilés dans votre répertoire bin.)

@ Pasortingck –

1) Avez-vous essayé de supprimer tout ce qui se trouvait dans votre répertoire de fichiers ASP.Net temporaires?

2) Si votre solution contenait des révisions de projets dépendants (et non votre projet de démarrage), avez-vous reconstruit manuellement ces projets dépendants individuellement?

3) Avez-vous access à recycler le pool d’applications pour votre site Web actif dans IIS?

4) Avez-vous essayé de recopier votre site Web en temps réel ou de modifier Web.Config dans votre site Web en direct?

Conseils généraux sur le cache d’applications –

  • Vous pouvez souvent actualiser votre cache d’applications en apportant une révision sortingviale à votre fichier Web.Config.

  • Comme indiqué dans ce fil de discussion , les modifications apscopes à Global.asax, les modifications du répertoire bin et les modifications du code d’application peuvent également déclencher une actualisation du pool d’applications.

  • En tant que solution à long terme, vous souhaiterez peut-être gérer votre cache d’applications via une classe de dépendance de fichier ou SQLCacheDependency . (Bien que cette dernière suggestion ne fonctionne peut-être pas sur des sites d’hébergement partagé comme GoDaddy.)

L’application Web ASP.NET comporte plusieurs interruptions. Recharger le projet est un moyen de résoudre plusieurs problèmes … Assez bizarre, en effet (call call bug)! Personnellement, je préfère les sites Web ASP.Net (au lieu d’Applications) avec la fonctionnalité JIT Compilation . FMO, il est plus rapide, plus facile et plus simple de maintenir un prj.