Procédure pas à pas : redirection d'une application afin de cibler un service Web différent au moment de l'installation

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 voulez utiliser une version de production du service Web lorsque votre application est déployée.

Notes

Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur de Visual Studio dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. 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.

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 créer le projet Bibliothèque de classes

  1. 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.

  2. Dans le nœud Visual Basic de la boîte de dialogue Ajouter un nouveau projet, sélectionnez Bibliothèque de classes.

  3. Nommez le projet InstallerClassLibrary.

Pour ajouter et implémenter une classe Installer

  1. Cliquez avec le bouton droit sur le nœud de projet InstallerClassLibrary dans l'Explorateur de solutions et cliquez sur Ajouter, puis sur Classe.

  2. 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.

  3. Double-cliquez sur le concepteur pour ouvrir l'éditeur de code.

  4. 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 install_log As New System.IO.StreamWriter("Installation.log")
        install_log.AutoFlush = True
    
        Try
            Dim providedName = Me.Context.Parameters.Item("ServerName")
            Dim svcName = Me.Context.Parameters.Item("ServiceName")
    
            install_log.WriteLine("Starting Edit of the config file")
    
            If providedName = "" OrElse svcName = "" Then
                Throw New InstallException("No arguments specified")
            End If
    
            ' Uses reflection to find the location of the config file.
            Dim strConfigLoc =
                System.Reflection.Assembly.GetExecutingAssembly().Location
    
            Dim strTemp = strConfigLoc
            strTemp = strTemp.Remove(strTemp.LastIndexOf("\"), Len(strTemp) -
              strTemp.LastIndexOf("\"))
            strTemp = strTemp.Remove(strTemp.LastIndexOf("\"), Len(strTemp) -
              strTemp.LastIndexOf("\"))
    
            Dim fInfo As New System.IO.FileInfo(strTemp & "\web.config")
    
            install_log.WriteLine("File info: " & strTemp)
    
            If Not fInfo.Exists Then
                Throw New InstallException("Missing config file")
            End If
    
            ' Loads the config file into the XML DOM.
            ' Loads the config file into the XML DOM.
            Dim xmlDoc = XDocument.Load(fInfo.FullName)
    
            ' Finds the right node and change it to the new value.
            Dim foundIt As Boolean = False
            For Each node In xmlDoc.<configuration>.<appSettings>.<add>
                If node.@key = "servername.service" Then
                    ' Note that "Service1.asmx" should be replaced with the
                    ' actual name of the XML Web service file.
                    node.@value = "http://" &
                        providedName & "/" & svcName & "/Service1.asmx"
                    foundIt = True
                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.
            xmlDoc.Save(fInfo.FullName)
    
        Finally
            install_log.WriteLine("Ending edit of config file")
            install_log.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 itérer au sein du 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.

  5. Dans l'Explorateur de solutions, double-cliquez sur le fichier Web.config pour l'ouvrir.

  6. 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.

  7. 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

  1. 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.

  2. 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.

  3. Dans la fenêtre Propriétés, sélectionnez la ProductName, propriété et affectez-lui comme valeur le nom de votre application Web.

  4. Dans l'Éditeur du système de fichiers, sélectionnez Dossier d'application Web.

  5. Dans le menu Action, pointez sur Ajouter, puis cliquez sur Sortie de projet.

  6. 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

  1. Dans l'Explorateur de solutions, sélectionnez le projet WebAppSetup.

  2. Dans le menu Affichage, cliquez sur Éditeur, puis sur Actions personnalisées.

    L'Éditeur des actions personnalisées s'ouvre.

  3. Dans l'Éditeur des actions personnalisées, sélectionnez le nœud Installer.

  4. Dans le menu Action, choisissez Ajouter une action personnalisée.

  5. Double-cliquez sur le Dossier d'application Web, puis sélectionnez Sortie principale de InstallerClassLibrary (Actif).

  6. Dans la fenêtre Propriétés, assurez-vous que la propriété InstallerClass a la valeur True.

  7. 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

  1. Dans l'Explorateur de solutions, sélectionnez le projet d'installation.

  2. Dans le menu Affichage, pointez sur Éditeur, puis cliquez sur Interface utilisateur.

  3. Dans l'Éditeur muni d'une interface utilisateur, sélectionnez le nœud Début sous Installer.

  4. Dans le menu Action, choisissez Ajouter une boîte de dialogue.

  5. 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.

  6. 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.

  7. 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

    RemarqueRemarque
    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

  1. Dans l'Explorateur de solutions, sélectionnez votre projet d'installation.

  2. Dans le menu Projet, cliquez sur Installer.

Pour déployer l'application vers un serveur Web sur un autre ordinateur

  1. 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.

  2. Copiez le fichier .msi, ainsi que tous les autres fichiers et sous-répertoires du répertoire sur l'ordinateur serveur Web.

  3. Sur l'ordinateur serveur Web, double-cliquez sur le fichier Setup.exe pour exécuter le programme d'installation.

Voir aussi

Autres ressources

Déploiement d'applications et de composants

Gestion des actions personnalisées lors d'un déploiement

Gestion de l'interface utilisateur lors d'un déploiement