Использование виртуальных каталогов IIS в проектах веб-приложений Visual Studio - PullRequest
10 голосов
/ 22 декабря 2009

У меня есть проект 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 обрабатывать мои подкаталоги проекта веб-приложения как виртуальные каталоги?

Ответы [ 6 ]

2 голосов
/ 17 мая 2010

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

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

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

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

Сначала посмотрите, как вы хотите, в IIS, затем откройте все в VS.

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

Например ...

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

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

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

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

0 голосов
/ 22 июня 2010

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

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

0 голосов
/ 09 июня 2010

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

0 голосов
/ 09 июня 2010

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

0 голосов
/ 04 июня 2010

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

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

http://dotnetperls.com/ashx-handler

0 голосов
/ 22 декабря 2009

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

...