2009-04-02 9 views
0

J'ai un style ASP classique #include d'un fichier ASP.NET comme: (! - #include file = "../../maininc.aspxinc" -)Mise en cache étrange aveC#include dans ASP.NET sur IIS6

(Je suppose qu'il est en fait un côté serveur IIS inclut)

il est une mise en cache d'étrange?. Il semble que le fichier d'origine est mis en cache de sorte que les modifications dans maininc.aspxinc n'ont aucun effet.

  1. IIS6
  2. expiration en-têtes hors autant que je peux voir
  3. Asp.NET 3,5 (ordinaire, pas le formulaire Web).

Que se passe-t-il? Que puis-je faire? Un type dynamique devrait-il être différent? (Je sais que dans ASP.NET ce serait normalement un contrôle :-)

Répondre

1

Pensez à utiliser un contrôle Web Server au lieu d'un #include. Voir http://msdn.microsoft.com/en-us/library/3207d0e3.aspx

Il n'y a pas de mise en cache étrange mais une compilation est en cours. Une page n'est compilée qu'une seule fois lors de son premier accès et l'assemblage résultant est stocké dans un dossier temporaire. Les requêtes suivantes pour la même page sont simplement passées au HttpHandler dans l'assembly.

Si vous modifiez la page, ASP.NET détecte que l'assembly existant ne correspond plus et ne se reconstruit plus. Je soupçonne fortement que les #includes ne sont pas prises en compte dans ce mécanisme.

Vous seriez mieux avec l'un: -

  • un UserControl (un fichier avec l'extension puis .ascx) Si l'inclusion représente un ensemble de contrôles HTML.
  • Utilisez un gabarit si l'inclusion est pour un balisage de navigation commun à utiliser par plusieurs pages
  • Un fichier de code source (.vb ou .cs) dans le App_Code si vous souhaitez inclure des classes communes.
  • Un projet de bibliothèque distinct qui crée une DLL pour le dossier bin.
+0

Merci, donc je dois juste trouver un moyen de forcer recompliation .. – Olav

+0

ou cesser d'utiliser #include et utiliser une approche plus conforme à ce que ASP.NET attend. – AnthonyWJones

+0

Le but était de le garder proche d'ASP.NET – Olav

Questions connexes