2011-10-03 2 views
3

J'utilise l'API de déploiement Web pour déployer un package Web (fichier .zip, créé par MSDeploy.exe) pour transférer le package par programme vers un serveur (nous devons faire d'autres choses avant de publier le paquet, c'est pourquoi nous ne le faisons pas tous en une seule fois en utilisant MSDeploy.exe).API Web Deploy (déploiement du package .zip) Clarification

Voici le code que j'ai. Ma question est vraiment de clarifier ce qui se passe quand cela est exécuté. Dans le fichier XML des paramètres du paquet, j'ai le nom de l'application spécifié ("Site Web par défaut") mais c'est à peu près tout, il n'y a pas d'autres paramètres spécifiés. De tester le serveur, il semble que le paquet est déployé avec succès, mais ma question est les autres paramètres sur le serveur que je déploie à se changer à mon insu, des paramètres par défaut publiés, etc.? Des choses comme les paramètres de sécurité, la navigation dans les répertoires, etc. dont je ne suis peut-être pas au courant? Le code ici semble déployer le paquet mais je suis anxieux de l'utiliser dans un environnement de production quand je ne suis pas sûr de la façon dont cette API fonctionne. La documentation MS n'est pas utile (plus comme inexistant, en fait).

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); 
} 

Si quelqu'un pourrait préciser que cet extrait devrait déployer un package à une application du site Web sur un serveur, sans modifier les paramètres du serveur existant (sauf si spécifié dans le fichier SetParameters.xml) qui serait vraiment utile. Toutes les bonnes ressources sur l'utilisation de l'API ou une explication de la façon dont le déploiement du Web fonctionne dans les coulisses serait également très appréciée!

Répondre

2

Le fichier setparameters contrôle uniquement la valeur des paramètres définis dans le package. Un paquet pourrait faire beaucoup plus que cela. Le déploiement Web a un concept de fournisseurs et tout package donné peut avoir un ou plusieurs fournisseurs. Si vous souhaitez vous assurer que le package ne modifie pas les paramètres côté serveur, la meilleure approche consiste à utiliser l'API, mais à déployer les packages via Web Management Service. Cela vous donnera deux avantages:

  1. Vous pouvez contrôler quels fournisseurs vous autorisez.
  2. Vous pouvez ajouter des utilisateurs et donner des autorisations restreintes pour les déployer sur leur site ou leur dossier, etc.

L'approche alternative consiste à:

  1. Dans le package rechercher manuellement à l'archive .xml et recherchez les fournisseurs dans le package. Tant que vous ne voyez aucun des fournisseurs suivants qui peuvent causer des changements de paramètres de serveur tels que apphostconfig ou webserver ou regkey (ce n'est pas une liste complète), vous devriez être bon. Runcommand est un fournisseur qui vous permet d'exécuter des scripts batch ou des commandes. Bien qu'il s'agisse d'un bon fournisseur pour les administrateurs eux-mêmes, vous devez déterminer si vous souhaitez autoriser l'exécution de packages avec de tels fournisseurs.

  2. Vous pouvez faire l'inspection mentionnée ci-dessus dans le code en appelant GetChildren sur l'objet de déploiement vous créez de l'emballage et inspectez les fournisseurs et les chemins de fournisseur.

Questions connexes