Странное кеширование с #include в ASP.NET на IIS6 - PullRequest
0 голосов
/ 02 апреля 2009

У меня есть классический стиль ASP #include из файла ASP.NET как: (! - #include file = "../../maininc.aspxinc" -)

(Угадайте, что это на самом деле включает сервер IIS?)

Это странное кеширование. Похоже, что оригинальный файл кэшируется, поэтому изменения в maininc.aspxinc не имеют никакого эффекта.

  1. IIS6
  2. Заголовки выдоха, насколько я вижу
  3. Asp.NET 3.5 (обычная, а не веб-форма).

Что происходит? Что я могу сделать? Должен ли динамический тип отличаться? (Я знаю, что в ASP.NET это обычно будет элемент управления: -)

1 Ответ

1 голос
/ 04 апреля 2009

Подумайте об использовании элемента управления веб-сервера вместо #include. Смотри http://msdn.microsoft.com/en-us/library/3207d0e3.aspx

Нет никакого странного кеширования, но идет компиляция. Страница компилируется только один раз при первом обращении к ней, и полученная сборка сохраняется во временной папке. Последующие запросы на ту же страницу просто передаются HttpHandler в сборке.

Если вы измените страницу, ASP.NET обнаружит, что существующая сборка больше не соответствует, и перестроит. Я сильно подозреваю, что #include не учитываются в этом механизме.

Вы бы лучше с одним из: -

  • UserControl (файл с расширением .ascx), если include представляет собой набор элементов управления HTML.
  • Использовать главную страницу, если включить для общей навигационной разметки для использования многими страницами
  • Файл исходного кода (.vb или .cs) в App_Code, если вы хотите включить некоторые общие классы.
  • Отдельный библиотечный проект, который создает dll для папки bin.
...