Web Deploy API (пакет развертывания .zip) Разъяснение - PullRequest
3 голосов
/ 03 октября 2011

Я использую API веб-развертывания для развертывания веб-пакета (.zip-файл, созданный MSDeploy.exe) для программного развертывания пакета на сервере (перед выпуском пакета нам нужно сделать что-то еще, чтоВот почему мы не делаем все это сразу, используя MSDeploy.exe).

Вот код, который у меня есть.Мой вопрос на самом деле, чтобы уточнить, что происходит, когда это выполняется.В XML-файле параметров пакета указано имя приложения («Веб-сайт по умолчанию»), но это все, в нем нет других параметров.После тестирования сервера выясняется, что пакет успешно развернут, но у меня вопрос: какие-либо другие настройки на сервере, на котором я работаю, меняются без моего ведома, опубликованы ли какие-либо настройки по умолчанию и т. Д.?Такие вещи, как настройки безопасности, просмотр каталогов и т. Д., О которых я мог не знать?Код здесь, кажется, развертывает пакет, но я беспокоюсь об использовании этого в производственной среде, когда я так не уверен в том, как работает этот API.Документация MS не полезна (на самом деле больше похожа на несуществующую).

DeploymentChangeSummary changes;

string packageToDeploy = "C:/MyPackageLocation.zip";
string packageParametersFile = "C:/MyPackageLocation.SetParameters.xml";

DeploymentBaseOptions destinationOptions = new DeploymentBaseOptions()
{
    UserName = "MyUsername",
    Password = "MyPassword",
    ComputerName = "localhost"
};

using (DeploymentObject deploymentObject = DeploymentManager.CreateObject(DeploymentWellKnownProvider.Package,
                                                                          packageToDeploy))
{
    deploymentObject.SyncParameters.Load(packageParametersFile);
    DeploymentSyncOptions syncOptions = new DeploymentSyncOptions();
    syncOptions.WhatIf = false;

    //Deploy the package to the server.
    changes = deploymentObject.SyncTo(destinationOptions, syncOptions);
}

Если кто-то может уточнить, что этот фрагмент должен развертывать пакет в приложении веб-сайта на сервере, не меняя существующий сервернастройки (если не указано в файле SetParameters.xml), которые будут действительно полезны.Будем весьма благодарны за любые полезные ресурсы по использованию API или объяснения того, как веб-развертывание работает за кулисами!

1 Ответ

2 голосов
/ 04 марта 2012

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

Если вы хотите убедиться, что пакет не изменяет настройки на стороне сервера, лучше всего использовать API, но развернуть пакеты через службу веб-управления.Это даст вам два преимущества:

  1. Вы можете контролировать, каких провайдеров вы пропускаете.
  2. Вы можете добавлять пользователей и предоставлять им ограниченные разрешения для развертывания на их сайте или в их папке и т. Д..

Альтернативный подход заключается в следующем:

  1. В пакете вручную посмотрите файл archive.xml и найдите поставщиков в пакете.Пока вы не видите ни одного из следующих провайдеров, которые могут вызвать изменение настроек сервера, таких как apphostconfig или webserver или regkey (это не полный список), вы должны быть хорошими.Runcommand - это поставщик, который позволяет вам выполнять пакетные сценарии или команды.Хотя это хороший поставщик для самих администраторов, вам нужно решить, хотите ли вы разрешить запуск пакетов с такими поставщиками.

  2. Вы можете выполнить вышеупомянутую проверку в коде, вызвав getchildren наобъект развертывания, который вы создаете из пакета и проверяете поставщиков и пути поставщиков.

...