csrun & cspack - какова цель sitePhysicalDirectories?

Я пытаюсь собрать пакет развертывания Azure с помощью cspack на моем сервере сборки для развертывания devfabric (csrun) на тестовом сервере. cspack покорно копирует двоичные файлы и файлы веб-ролей в пакет csx, но для каждой веб-роли также требуется путь sitePhysicalDirectory, который встроен в файл RoleModel.xml. Этот каталог должен существовать во время упаковки.

После развертывания csrun устанавливает сайт IIS, который указывает непосредственно на путь sitePhysicalDirectory и, по-видимому, полностью игнорирует двоичные файлы веб-ролей, упакованные в пакет csx. Излишне говорить, что тестовое развертывание на другой машине не работает.

Я что-то здесь упускаю? Почему cspack/csrun не может установить физический путь в IIS в соответствии с пакетом csx? Какова цель пакета csx, если упакованные двоичные файлы не используются? Что делает sitePhysicalDirectories в производственном развертывании Azure?

3 ответа

Решение

Я думаю, что часть этого связана с добавлением Full IIS. Раньше у вас был подходящий каталог в Windows Azure как для процесса RoleEntryPoint, так и для хоста IIS WAS (один и тот же). Однако при полной IIS у вас будет w3wp.exe, выполняющий ваш веб-код, и процесс WaWorker, выполняющий вашу RoleEntryPoint.

Было принято решение эффективно скопировать весь веб-сайт (на котором также имеется WebRole.cs RoleEntryPoint) в новый каталог и получить там полный IIS-каталог. Таким образом, вы заметите, что ваша упаковка для веб-ролей фактически содержит копию вашего кода дважды. Один раз для веб-сайта и один раз для WebRole.cs RoleEntryPoint. Только ваша RoleEntryPoint теперь выполняется вне очереди. Я не помню всех технических причин, по которым это произошло, но, возможно, было бы проще / безопаснее скопировать сайт, чем рискнуть пропустить зависимость.

Я начинаю думать, что ответ на все эти вопросы таков: "Потому что cspack/csrun - плохо спроектированные груды мусора, которые никогда не должны были доставляться". Кажется, они созданы для поддержки Visual Studio и ничего более.

Обновите файл RoleModel.xml вручную, чтобы установить для атрибута PhysicalPath значение "Approot" (это относится к расположению RoleModel.xml) после того, как упаковка выглядит приемлемым обходным путем.

Я думаю, что sitePhysicalDirectory должна быть установлена ​​как папка в AppRoot в вашем csx пакете, а не как источник бинарных файлов и файлов вашей веб-роли.

Другие вопросы по тегам