Procédure pas à pas : redirection d'une application afin de cibler un service Web différent au moment de l'installation
Mise à jour : novembre 2007
Cette procédure pas à pas explique comment créer une application Web pouvant être redirigée pour cibler un autre service Web en utilisant la propriété URL Behavior, une classe Installer et un projet d'installation Web. Cette procédure est utile lorsque vous avez besoin de cibler un service Web localement au cours du développement et souhaitez utiliser une version de production du service Web lorsque votre application est déployée.
Remarque : |
---|
Les boîtes de dialogue et les commandes de menu qui s'affichent peuvent être différentes de celles qui sont décrites dans l'aide, en fonction de vos paramètres actifs ou de l'édition utilisée. Pour modifier vos paramètres, choisissez Importation et exportation de paramètres dans le menu Outils. Pour plus d'informations, consultez Paramètres Visual Studio. |
Création d'un projet d'application Web
La première étape consiste à créer un projet d'application Web ASP.NET contenant une référence Web à un service Web.
Pour créer le projet
- Créez une application Web contenant une référence Web à un service Web. Une référence Web à n'importe quel service Web valide suffira pour cette procédure pas à pas. Par exemple, vous pouvez utiliser l'application Web décrite dans Procédure pas à pas : accès à un service Web en utilisant Visual Basic ou Visual C#.
Ajout d'une classe Installer
Les classes Installer, également connues sous le nom de composants d'installation, sont des classes .NET Framework appelées en tant qu'actions personnalisées lors de l'installation. Dans ce cas-ci, vous ajouterez un projet Bibliothèque de classes à la solution. Dans ce projet Bibliothèque de classes, vous créerez une classe Installer et substituerez sa méthode Install, en ajoutant du code afin de modifier le fichier .config de l'application Web. Pour plus d'informations sur les classes Installer, consultez Introduction aux composants d'installation.
Pour créer le projet Bibliothèque de classes
Cliquez avec le bouton droit sur le nœud de la solution dans l'Explorateur de solutions et cliquez sur Ajouter, puis sur Nouveau projet.
Dans le nœud Visual Basic de la boîte de dialogue Ajouter un nouveau projet, sélectionnez Bibliothèque de classes.
Nommez le projet InstallerClassLibrary.
Pour ajouter et implémenter une classe Installer
Cliquez avec le bouton droit sur le nœud de projet InstallerClassLibrary dans l'Explorateur de solutions et cliquez sur Ajouter, puis sur Classe.
Dans la boîte de dialogue Ajouter un nouvel élément, sélectionnez Classe Installer et remplacez le Nom par WebServiceInstaller.vb.
Lorsque vous cliquez sur Ajouter, la classe est ajoutée au projet et le concepteur de la classe Installer s'ouvre.
Double-cliquez sur le concepteur pour ouvrir l'éditeur de code.
Dans WebServiceInstaller.vb, ajoutez le code suivant en bas du module de classe Installer (juste au-dessus de la déclaration End Class) ; ce code implémente la méthode Install :
Public Overrides Sub Install(ByVal stateSaver As _ System.Collections.IDictionary) ' Gets the parameter passed across in the CustomActionData. Dim installlog As New System.IO.StreamWriter("Installation.log") installlog.AutoFlush = True Try Dim ProvidedName As String = Me.Context.Parameters.Item("ServerName") Dim SvcName As String = Me.Context.Parameters.Item("ServiceName") installlog.WriteLine("Starting Edit of the config file") If ProvidedName = "" Or SvcName = "" Then Throw New InstallException("No arguments specified") End If ' Uses reflection to find the location of the config file. Dim Asm As System.Reflection.Assembly = _ System.Reflection.Assembly.GetExecutingAssembly Dim strConfigLoc As String strConfigLoc = Asm.Location Dim strTemp As String strTemp = strConfigLoc strTemp = strTemp.Remove(strTemp.LastIndexOf("\"), Len(strTemp) - _ strTemp.LastIndexOf("\")) strTemp = strTemp.Remove(strTemp.LastIndexOf("\"), Len(strTemp) - _ strTemp.LastIndexOf("\")) Dim FileInfo As System.IO.FileInfo = New System.IO.FileInfo( _ strTemp & "\web.config") installlog.WriteLine("File info: " & strTemp) If Not FileInfo.Exists Then Throw New InstallException("Missing config file") End If ' Loads the config file into the XML DOM. Dim XmlDocument As New System.Xml.XmlDocument() XmlDocument.Load(FileInfo.FullName) ' Finds the right node and change it to the new value. Dim Node As System.Xml.XmlNode Dim FoundIt As Boolean = False For Each Node In _ XmlDocument.Item("configuration").Item("appSettings") ' Skips any comments. If Node.Name = "add" Then If Node.Attributes.GetNamedItem("key").Value = _ "servername.service" Then ' Note that "Service1.asmx" should be replaced with the ' actual name of the XML Web service file. Node.Attributes.GetNamedItem("value").Value = "http://" _ & ProvidedName & "/" & SvcName & "/Service1.asmx" FoundIt = True End If End If Next Node If Not FoundIt Then Throw New InstallException("Config file did not contain a ServerName section") End If ' Writes out the new config file. XmlDocument.Save(FileInfo.FullName) Finally installlog.WriteLine("Ending edit of config file") installlog.Close() End Try End Sub
Le code ci-dessus commence par créer un fichier journal d'installation qui enregistre la progression de l'action personnalisée. L'espace de noms System.Reflection est utilisé pour rechercher l'assembly en cours d'installation ainsi que le fichier .config associé. Le modèle de document XML est utilisé pour parcourir le fichier .config jusqu'à ce que la section appSettings soit trouvée. Une fois la clé servername.service détectée, la valeur qui lui est associée est modifiée pour inclure les paramètres qui ont été passés, en redirigeant l'application pour utiliser le nouveau service Web.
Dans l'Explorateur de solutions, double-cliquez sur le fichier Web.config pour l'ouvrir.
Copiez la valeur de la clé de votre service Web dans la section appSettings . La clé prend la forme servername.service, où servername est le serveur sur lequel se situe le service Web et service est le nom du service Web.
Ouvrez le module de classe Installer dans l'éditeur de code et remplacez le texte "servername.service" par la valeur que vous avez copiée à l'étape précédente.
Ajout d'un projet d'installation Web
Les projets d'installation sont utilisés afin de créer un programme d'installation pour votre application. Basés sur la technologie Windows Installer, les projets d'installation incluent des fonctionnalités telles que la capacité à exécuter des actions personnalisées pendant l'installation et à personnaliser l'interface utilisateur d'installation. Pour plus d'informations sur les projets d'installation, consultez Déploiement d'applications et de composants.
Pour ajouter un projet d'installation Web
Cliquez avec le bouton droit sur le nœud de la solution dans l'Explorateur de solutions et cliquez sur Ajouter, puis sur Nouveau projet.
Dans le volet Types de projets de la boîte de dialogue Ajouter un nouveau projet, développez le nœud Autres types de projets, puis sélectionnez le nœud Projets de configuration et de déploiement.
Dans le volet Modèles, sélectionnez Projet d'installation Web. Dans la zone Nom, nommez le projet WebAppSetup.
Lorsque vous cliquez sur OK, le projet est ajouté à la solution et l'Éditeur du système de fichiers s'ouvre.
Dans la fenêtre Propriétés, sélectionnez la ProductName, propriété et affectez-lui comme valeur le nom de votre application Web.
Dans l'Éditeur du système de fichiers, sélectionnez Dossier d'application Web.
Dans le menu Action, pointez sur Ajouter, puis cliquez sur Sortie de projet.
Dans la boîte de dialogue Ajouter le groupe de sorties du projet, sélectionnez InstallerClassLibrary dans la liste déroulante Projet, puis sélectionnez Sortie principale.
Lorsque vous cliquez sur OK, la sortie principale d'InstallerClassLibrary est ajoutée au projet d'installation Web.
Ajout d'une action personnalisée
Les actions personnalisées sont utilisées pour exécuter du code à la fin d'une installation afin d'effectuer des actions qui ne peuvent pas être gérées pendant l'installation. Le code d'une action personnalisée peut être contenu dans un fichier .dll, .exe, de script ou d'assembly. Pour plus d'informations sur les actions personnalisées, consultez Gestion des actions personnalisées lors d'un déploiement.
Pour ajouter la classe Installer en tant qu'action personnalisée
Dans l'Explorateur de solutions, sélectionnez le projet WebAppSetup.
Dans le menu Affichage, cliquez sur Éditeur, puis sur Actions personnalisées.
L'Éditeur des actions personnalisées s'ouvre.
Dans l'Éditeur des actions personnalisées, sélectionnez le nœud Installer.
Dans le menu Action, choisissez Ajouter une action personnalisée.
Double-cliquez sur le Dossier d'application Web, puis sélectionnez Sortie principale de InstallerClassLibrary (Actif).
Dans la fenêtre Propriétés, assurez-vous que la propriété InstallerClass a la valeur True.
Sélectionnez la propriété CustomActionData et entrez le texte suivant : /ServerName=[EDITA1] /ServiceName=[EDITA2]
La propriété CustomActionData fournit les deux paramètres qui sont transmis à l'action personnalisée, séparés par un espace.
Ajout d'une boîte de dialogue
Les boîtes de dialogue de l'interface utilisateur sont affichées au cours de l'installation afin de collecter des informations auprès de l'utilisateur. Pour plus d'informations sur les boîtes de dialogue de l'interface utilisateur, consultez Gestion de l'interface utilisateur lors d'un déploiement.
Pour ajouter une boîte de dialogue personnalisée de l'interface utilisateur
Dans l'Explorateur de solutions, sélectionnez le projet d'installation.
Dans le menu Affichage, pointez sur Éditeur, puis cliquez sur Interface utilisateur.
Dans l'Éditeur muni d'une interface utilisateur, sélectionnez le nœud Début sous Installer.
Dans le menu Action, choisissez Ajouter une boîte de dialogue.
Dans la boîte de dialogue Ajouter une boîte de dialogue, choisissez la boîte de dialogue Zones de texte (A), puis cliquez sur OK.
Dans le menu Action, choisissez Monter jusqu'à ce que la boîte de dialogue Zones de texte (A) soit positionnée au-dessus de la boîte de dialogue Adresse d'installation.
Dans la fenêtre Propriétés, définissez les propriétés suivantes :
Propriété
Valeur
BannerText
Entrez le nom du serveur et du service
Edit1Label
Nom du serveur :
Edit1Value
Localhost
Remarque : Cette propriété spécifie un serveur par défaut. Vous pouvez entrer le nom de votre serveur par défaut ici.
Edit2Label
Nom du service :
Edit2Value
<nom du service>
Edit3Visible
False
Edit4Visible
False
Notez que la propriété Edit1Property a la valeur "EDITA1" et que la propriété Edit2Property a la valeur "EDITA2. Cela correspond aux valeurs que vous avez entrées dans la propriété CustomActionData dans l'Éditeur des actions personnalisées. Lorsque l'utilisateur entre du texte dans ces contrôles d'édition au cours de l'installation, les valeurs sont automatiquement transmises au moyen de la propriété CustomActionData.
Génération et déploiement de l'application
La dernière étape consiste à générer le projet d'installation afin de créer le programme d'installation, puis à installer votre application sur le serveur cible.
Pour générer le projet d'installation
- Dans le menu Générer, sélectionnez Générer NomProjet, où NomProjet est le nom de votre projet d'installation.
Pour déployer l'application vers un serveur Web sur votre ordinateur de développement
Dans l'Explorateur de solutions, sélectionnez votre projet d'installation.
Dans le menu Projet, cliquez sur Installer.
Pour déployer l'application vers un serveur Web sur un autre ordinateur
Dans l'Explorateur Windows, naviguez jusqu'à votre répertoire de projet et recherchez le programme d'installation généré. Le chemin d'accès par défaut sera \documents and settings\VotreNomDeConnexion\Mes Documents\Visual Studio Projects\NomProjetConfiguration\configuration de projet\NomProduit.msi. La configuration de projet par défaut est Debug.
Copiez le fichier .msi, ainsi que tous les autres fichiers et sous-répertoires du répertoire sur l'ordinateur serveur Web.
Sur l'ordinateur serveur Web, double-cliquez sur le fichier Setup.exe pour exécuter le programme d'installation.
Voir aussi
Concepts
Introduction aux composants d'installation
Autres ressources
Déploiement d'applications et de composants