Использование виртуальных каталогов IIS в проектах Visual Studio Web Application

У меня есть проект ASP.NET, который имеет следующие каталоги
<Б >
\ Объявления
\ фотографии

обе эти папки содержат тысячи файлов, которые часто обновляются. В настоящее время у меня установлен IIS, например, <Б >
\ Inetpub\Wwwroot\Foo
\ Inetpub\Wwwroot\Foo\объявления
\ Inetpub\Wwwroot\Foo\фотографии
\ Inetpub\Wwwroot\foo.staging
\ Inetpub\Wwwroot\foo.staging\объявления
\ Inetpub\Wwwroot\foo.staging\фотографии

Я рассматриваю возможность превратить это в <Б >
\ Inetpub\Wwwroot\Foo
\ Inetpub\Wwwroot\Foo\объявления
\ Inetpub\Wwwroot\Foo\фотографии
\ Inetpub\Wwwroot\foo.staging
\ Inetpub\Wwwroot\foo.staging\объявления
\ Inetpub\Wwwroot\foo.staging\фотографии
\ Inetpub\Wwwroot\foo.resources\объявления
\ Inetpub\Wwwroot\foo.resources\фотографии

и превращение подкаталогов в foo и foo.staging в виртуальные каталоги, которые указывают на подкаталоги foo.resources. Таким образом, пока я тестирую процесс, мне не нужно копировать все файлы в объявлениях и фотографиях при каждом развертывании и беспокоиться о том, что ситуация не синхронизирована. Это плохая идея? Я развиваюсь в Visual Studio 2008 - Есть ли способ заставить VS обрабатывать подкаталоги проекта моего веб-приложения как виртуальные каталоги?

Ответ 1

Виртуальный каталог, содержащийся в веб-приложении в IIS, просто выглядит как пакет в Visual Studio.

Открыв корневое приложение и нажав на пакет, он должен спросить вас, хотите ли вы добавить дочернее приложение /vdir в решение. Затем откройте его как второй проект, затем вы можете обратиться к нему или использовать его по мере необходимости.

Идея тестирования и развертывания в реальном времени заключается в том, что у вас должны быть отдельные данные, если ваше тестирование что-то сломает. По сути, используя данные в реальном времени для тестирования, вы должны быть уверены, что не удаляете/не изменяете то, что не должны или вы нарушаете свою живую копию данных.

Сказав, что если все, что вы планируете строить, это то, что читает данные, это отличная идея, так как это позволит вам сэкономить много места и времени на развертывании.

Посмотрите, как вы хотите, чтобы он в IIS сначала открывал вещи в VS.

Visual Studio рассматривает все виртуальные приложения, определенные на сервере в качестве подпрограммы. Если ресурсы не установлены в дочерних каталогах как приложение в IIS, оно должно отображаться как обычная папка.

Например...

Если вы настроите 2 веб-сайта в IIS и сопоставьте физическую папку с изображениями как в качестве виртуальных каталогов, вы должны иметь к ним доступ в качестве обычных папок при открытии в Visual Studio.

Однако, если вы создадите виртуальные каталоги в приложениях в IIS, а затем откройте веб-сайт в VS, он должен просто показать пакет. Нажатие на это добавляет его как второй проект в VS.

Я не лучший, объясняя вещи, но, надеюсь, это имело смысл.

Надеюсь, это поможет:)

Ответ 2

Я думаю, что путь для этого - настроить его так, как вы хотите, в IIS, сначала с помощью vdirs, а затем открыть веб-сайт из IIS в Visual Studio. См. мой ответ на этот вопрос.

Ответ 3

Я вижу похожую проблему с моим приложением, касающуюся наличия ресурсов для копирования при развертывании.
Я рассматриваю возможность создания обработчика файлов, который обслуживает ресурсы изображения в браузере. То есть При привязке к изображениям, у которых есть что-то вроде /filehandler.ashx?image=/ads/101/o3904838402384.jpg, вы можете иметь только конфигурационный параметр, указывающий на разные или те же файлы хранения для тестовых и живых сред.

Вот ссылка на основы того, как это работает.

http://dotnetperls.com/ashx-handler

Ответ 4

Вы можете использовать связанные папки в Visual Studio = это создает виртуальную ссылку на папку в другом проекте (или где-то еще на диске), но физически не копирует их на диск.

Ответ 5

Еще один вариант... Если вы используете SVN, и если вы счастливы, что изображения физически дважды на диске, но все еще им синхронизированы, следует использовать внешние SVN

Ответ 6

Так как это ресурсы, есть ли какая-то конкретная причина, по которой они вам нужны, чтобы быть в Visual Studio? VS, IMO, предназначен для управления кодом в решении, а не для структуры каталогов.

В IIS вы можете настроить структуру своего каталога точно так же, как у вас есть (или даже указать виртуальный каталог на сетевой диск), и Visual Studio может полностью игнорировать его, так как это скорее всего куча статических файлов.