Назад | Перейти на главную страницу

IIS7 не отслеживает изменения символических ссылок

Я использовал утилиту mklink для создания символической ссылки на каталог веб-контента. IIS7 не «видит» изменений в классических файлах ASP в этом связанном каталоге без выполнения iisreset. Я отключил кеширование, и изменения файлов сохраняются в других статических файлах (таких как .html), но файлы .asp игнорируются.

Это ответ, который вы ищете.

https://stackoverflow.com/questions/6698481/caching-problem-with-symlinks-on-iis-7-5

IIS не знает, когда Visual Studio изменила файл по символической ссылке. Но вы можете указать iis не кэшировать локальные файлы в памяти. Используйте только в среде разработки ... в производстве вы должны повторно использовать пул после обновления, если вы используете символическую ссылку.

Это либо известно, либо преднамеренно (выберите эвфемизм для выражения «это не работает так, как вы думаете»). В iis7 вы должны использовать виртуальные каталоги, чтобы указывать на одну и ту же физическую папку для достижения того, что вы хотите.

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

Предположим, вы хороший разработчик и используете систему контроля версий. Предположим, вы настроили интегрированную среду клиент / сервер, в которой VSS используется на сервере, а разработчики используют Visual Studio на клиентах. Итак, разработчик извлекает asp-файл из VSS, вносит изменения и хочет протестировать его на клиенте, прежде чем возвращать его для интеграционного тестирования на сервере. Вы не хотите, чтобы разработчик копировал файл в wwwroot, поэтому у вас есть виртуальный каталог, сопоставленный с каталогом веб-сайтов VS. Основная проблема возникает из-за файла web.config, который контролирует базы данных и менеджеры отчетов, а также всю прочую ерунду MS, которую использует сайт. Исправленный файл web.config в VSS указывает на среду тестирования интеграции сервера, где все изменения, внесенные разработчиками, проверяются после завершения модульного тестирования на их клиентах. Что ж, в iis нет пути поиска для web.config, который мог бы переопределить web.config, который является частью проекта VSS, который был зарегистрирован в VS. Здесь будут использоваться символические ссылки. Каталог приложения wwwroot будет содержать локальную копию web.config, которая указывает на среду разработки клиента и имеет символические ссылки для файлов, находящихся под контролем VSS через VS.

Это так просто сделать в linux и любой другой разновидности unix, потому что символические ссылки существуют всегда, потому что описанный мной сценарий и другие подобные ему очень распространены.