Partager via


Filtres d’actions personnalisés d’ASP.NET MVC 4

Par web Camps Team

Télécharger le Kit de formation Web Camps

ASP.NET MVC fournit des filtres d’action pour l’exécution d’une logique de filtrage avant ou après l’appel d’une méthode d’action. Les filtres d’action sont des attributs personnalisés qui fournissent des moyens déclaratifs d’ajouter un comportement de pré-action et de post-action aux méthodes d’action du contrôleur.

Dans ce laboratoire pratique, vous allez créer un attribut de filtre d’action personnalisé dans la solution MvcMusicStore pour intercepter les requêtes du contrôleur et consigner l’activité d’un site dans une table de base de données. Vous pourrez ajouter votre filtre de journalisation par injection à n’importe quel contrôleur ou action. Enfin, vous verrez l’affichage du journal qui affiche la liste des visiteurs.

Ce laboratoire pratique suppose que vous avez des connaissances de base sur ASP.NET MVC. Si vous n’avez pas déjà utilisé ASP.NET MVC, nous vous recommandons de passer en charge ASP.NET laboratoire pratique MVC 4.

Remarque

Tous les exemples de code et d’extraits de code sont inclus dans le Kit de formation Web Camps, disponible à partir de Microsoft-Web/WebCampTrainingKit Releases. Le projet spécifique à ce labo est disponible à ASP.NET filtres d’actions personnalisées MVC 4.

Objectifs

Dans ce laboratoire pratique, vous allez apprendre à :

  • Créer un attribut de filtre d’action personnalisé pour étendre les fonctionnalités de filtrage
  • Appliquer un attribut de filtre personnalisé par injection à un niveau spécifique
  • Inscrire un filtre d’action personnalisé globalement

Prérequis

Vous devez disposer des éléments suivants pour effectuer ce labo :

Programme d’installation

Installation d’extraits de code

Pour plus de commodité, une grande partie du code que vous allez gérer le long de ce labo est disponible en tant qu’extraits de code Visual Studio. Pour installer les extraits de code, exécutez le fichier .\Source\Setup\CodeSnippets.vsi .

Si vous n’êtes pas familiarisé avec les extraits de code Visual Studio Code et que vous souhaitez apprendre à les utiliser, vous pouvez consulter l’annexe de ce document « Annexe C : Utilisation d’extraits de code ».


Exercices

Ce laboratoire pratique est composé des exercices suivants :

  1. Exercice 1 : Actions de journalisation
  2. Exercice 2 : Gestion de plusieurs filtres d’action

Durée estimée pour terminer ce labo : 30 minutes.

Remarque

Chaque exercice est accompagné d’un dossier End contenant la solution résultante que vous devez obtenir après avoir effectué les exercices. Vous pouvez utiliser cette solution comme guide si vous avez besoin d’aide supplémentaire pour travailler dans les exercices.

Exercice 1 : Actions de journalisation

Dans cet exercice, vous allez apprendre à créer un filtre de journal d’actions personnalisé à l’aide de ASP.NET fournisseurs de filtre MVC 4. À cet effet, vous allez appliquer un filtre de journalisation au site MusicStore qui enregistre toutes les activités dans les contrôleurs sélectionnés.

Le filtre étend ActionFilterAttributeClass et remplace la méthode OnActionExecuting pour intercepter chaque requête, puis effectuer les actions de journalisation. Les informations de contexte sur les requêtes HTTP, l’exécution de méthodes, les résultats et les paramètres seront fournies par ASP.NET classe ActionExecutingContext MVC.

Remarque

ASP.NET MVC 4 dispose également de fournisseurs de filtres par défaut que vous pouvez utiliser sans créer de filtre personnalisé. ASP.NET MVC 4 fournit les types de filtres suivants :

  • Filtre d’autorisation , qui prend des décisions de sécurité sur l’exécution d’une méthode d’action, comme l’exécution de l’authentification ou la validation des propriétés de la requête.
  • Filtre d’action , qui encapsule l’exécution de la méthode d’action. Ce filtre peut effectuer un traitement supplémentaire, par exemple fournir des données supplémentaires à la méthode d’action, inspecter la valeur de retour ou annuler l’exécution de la méthode d’action
  • Filtre de résultats , qui encapsule l’exécution de l’objet ActionResult. Ce filtre peut effectuer un traitement supplémentaire du résultat, tel que la modification de la réponse HTTP.
  • Filtre d’exception, qui s’exécute s’il existe une exception non gérée levée quelque part dans la méthode d’action, en commençant par les filtres d’autorisation et se terminant par l’exécution du résultat. Les filtres d’exceptions peuvent être utilisés pour les tâches telles que la journalisation ou l’affichage d’une page d’erreur.

Pour plus d’informations sur les fournisseurs de filtres, consultez ce lien MSDN : (https://msdn.microsoft.com/library/dd410209.aspx) .

À propos de la fonctionnalité de journalisation des applications du Magasin de musique MVC

Cette solution Music Store a une nouvelle table de modèle de données pour la journalisation de site, ActionLog, avec les champs suivants : Nom du contrôleur qui a reçu une demande, Action Appelée, Adresse IP du client et horodatage.

Modèle de données. Table ActionLog.

Modèle de données - Table ActionLog

La solution fournit une vue ASP.NET MVC pour le journal des actions qui se trouve sur MvcMusicStores/Views/ActionLog :

Vue journal des actions

Vue journal des actions

Avec cette structure donnée, tout le travail sera axé sur l’interruption de la requête du contrôleur et l’exécution de la journalisation à l’aide du filtrage personnalisé.

Tâche 1 : création d’un filtre personnalisé pour intercepter la requête d’un contrôleur

Dans cette tâche, vous allez créer une classe d’attribut de filtre personnalisée qui contiendra la logique de journalisation. À cet effet, vous allez étendre ASP.NET classe ActionFilterAttribute MVC et implémenter l’interface IActionFilter.

Remarque

ActionFilterAttribute est la classe de base pour tous les filtres d’attributs. Il fournit les méthodes suivantes pour exécuter une logique spécifique après et avant l’exécution de l’action du contrôleur :

  • OnActionExecuting(ActionExecutingContext filterContext) : juste avant l’appel de la méthode d’action.
  • OnActionExecuted(ActionExecutedContext filterContext) : une fois la méthode d’action appelée et avant l’exécution du résultat (avant le rendu de la vue).
  • OnResult Execute(Result ExecuteContext filterContext) : juste avant l’exécution du résultat (avant le rendu de la vue).
  • OnResultExecuted(ResultExecutedContext filterContext) : une fois le résultat exécuté (après le rendu de l’affichage).

En remplaçant l’une de ces méthodes dans une classe dérivée, vous pouvez exécuter votre propre code de filtrage.

  1. Ouvrez la solution Begin située dans le dossier \Source\Ex01-LoggingActions\Begin.

    1. Vous devrez télécharger des packages NuGet manquants avant de continuer. Pour ce faire, cliquez sur le menu Projet et sélectionnez Gérer les packages NuGet.

    2. Dans la boîte de dialogue Gérer les packages NuGet, cliquez sur Restaurer pour télécharger les packages manquants.

    3. Enfin, générez la solution en cliquant sur Générer | la solution.

      Remarque

      L’un des avantages de l’utilisation de NuGet est que vous n’avez pas à expédier toutes les bibliothèques dans votre projet, ce qui réduit la taille du projet. Avec NuGet Power Tools, en spécifiant les versions du package dans le fichier Packages.config, vous pourrez télécharger toutes les bibliothèques requises la première fois que vous exécutez le projet. C’est pourquoi vous devrez exécuter ces étapes après avoir ouvert une solution existante à partir de ce labo.

      Pour plus d’informations, consultez cet article : https://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages.

  2. Ajoutez une nouvelle classe C# dans le dossier Filters et nommez-la CustomActionFilter.cs. Ce dossier stocke tous les filtres personnalisés.

  3. Ouvrez CustomActionFilter.cs et ajoutez une référence aux espaces de noms System.Web.Mvc et MvcMusicStore.Models :

    (Extrait de code - ASP.NET filtres d’actions personnalisées MVC 4 - Ex1-CustomActionFilterNamespaces)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using MvcMusicStore.Models;
    
  4. Héritez de la classe CustomActionFilter d’ActionFilterAttribute, puis faites en sorte que la classe CustomActionFilter implémente l’interface IActionFilter.

    //...
    namespace MvcMusicStore.Filters
    {
        public class CustomActionFilter : ActionFilterAttribute, IActionFilter
        {
            //...
        }
    }
    
  5. La classe CustomActionFilter remplace la méthode OnAction Execution et ajoute la logique nécessaire pour journaliser l’exécution du filtre. Pour ce faire, ajoutez le code en surbrillance suivant dans la classe CustomActionFilter .

    (Extrait de code - ASP.NET filtres d’actions personnalisées MVC 4 - Ex1-LoggingActions)

    public class CustomActionFilter : ActionFilterAttribute, IActionFilter
    {
        void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
        {
            // TODO: Add your action filter's tasks here
    
            // Log Action Filter call
            using (MusicStoreEntities storeDb = new MusicStoreEntities())
            {
                ActionLog log = new ActionLog()
                {
                    Controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName,
                    Action = string.Concat(filterContext.ActionDescriptor.ActionName, " (Logged By: Custom Action Filter)"),
                    IP = filterContext.HttpContext.Request.UserHostAddress,
                    DateTime = filterContext.HttpContext.Timestamp
                };
                storeDb.ActionLogs.Add(log);
                storeDb.SaveChanges();
                OnActionExecuting(filterContext);
            }
        }
    }
    

    Remarque

    La méthode OnActionExecuting utilise Entity Framework pour ajouter un nouveau registre ActionLog. Il crée et remplit une nouvelle instance d’entité avec les informations de contexte de filterContext.

    Vous pouvez en savoir plus sur la classe ControllerContext sur msdn.

Tâche 2 : injection d’un intercepteur de code dans la classe du contrôleur de magasin

Dans cette tâche, vous allez ajouter le filtre personnalisé en l’injectant dans toutes les classes de contrôleur et actions de contrôleur qui seront journalisées. Dans le cadre de cet exercice, la classe Store Controller aura un journal.

La méthode OnActionExecuting à partir du filtre personnalisé ActionLogFilterAttribute s’exécute lorsqu’un élément injecté est appelé.

Il est également possible d’intercepter une méthode de contrôleur spécifique.

  1. Ouvrez StoreController sur MvcMusicStore\Controllers et ajoutez une référence à l’espace de noms Filters :

    using System.Linq;
    using System.Web.Mvc;
    using MvcMusicStore.Models;
    using MvcMusicStore.Filters;
    
  2. Injectez le filtre personnalisé CustomActionFilter dans la classe StoreController en ajoutant l’attribut [CustomActionFilter] avant la déclaration de classe.

    ...
    [CustomActionFilter]
    public class StoreController : Controller
    {
        ...
    }
    

    Remarque

    Lorsqu’un filtre est injecté dans une classe de contrôleur, toutes ses actions sont également injectées. Si vous souhaitez appliquer le filtre uniquement pour un ensemble d’actions, vous devez injecter [CustomActionFilter] à chacun d’entre eux :

    [CustomActionFilter]
    public ActionResult Index()
    {
      ...
    }
    
    [CustomActionFilter]
    public ActionResult Browse(string genre)
    {
      ...
    }
    

Tâche 3 : exécution de l’application

Dans cette tâche, vous allez tester que le filtre de journalisation fonctionne. Vous allez démarrer l’application et visiter le magasin, puis vérifier les activités journalisées.

  1. Appuyez sur F5 pour exécuter l'application.

  2. Accédez à /ActionLog pour afficher l’état initial de l’affichage du journal :

    Capture d’écran montrant l’état du journal des actions avant l’activité de page.

    État du suivi des journaux avant l’activité de la page

    Remarque

    Par défaut, il affiche toujours un élément généré lors de la récupération des genres existants pour le menu.

    À des fins de simplicité, nous nettoyerons la table ActionLog chaque fois que l’application s’exécute afin qu’elle affiche uniquement les journaux de la vérification de chaque tâche particulière.

    Vous devrez peut-être supprimer le code suivant de la méthode Session_Start (dans la classe Global.asax ), afin d’enregistrer un journal historique pour toutes les actions exécutées dans le contrôleur store.

    // Clean up Logs Table
    MusicStoreEntities storeDB = new MusicStoreEntities();
    foreach (var log in 
    
    storeDB.ActionLogs.ToList())
    {
       storeDB.ActionLogs.Remove(log);
    }
    
    storeDB.SaveChanges();
    
  3. Cliquez sur l’un des genres dans le menu et effectuez certaines actions, comme parcourir un album disponible.

  4. Accédez à /ActionLog et, si le journal est vide, appuyez sur F5 pour actualiser la page. Vérifiez que vos visites ont été suivies :

    Capture d’écran montrant le journal des actions où vous pouvez vérifier vos visites.

    Journal des actions avec activité journalisée

Exercice 2 : Gestion de plusieurs filtres d’action

Dans cet exercice, vous allez ajouter un deuxième filtre d’action personnalisée à la classe StoreController et définir l’ordre spécifique dans lequel les deux filtres seront exécutés. Ensuite, vous allez mettre à jour le code pour inscrire le filtre globalement.

Il existe différentes options à prendre en compte lors de la définition de l’ordre d’exécution des filtres. Par exemple, la propriété Order et l’étendue des filtres :

Vous pouvez définir une étendue pour chacun des filtres, par exemple, vous pouvez étendre tous les filtres d’action à exécuter dans l’étendue du contrôleur et tous les filtres d’autorisation à exécuter dans l’étendue globale. Les étendues ont un ordre d’exécution défini.

En outre, chaque filtre d’action a une propriété Order qui est utilisée pour déterminer l’ordre d’exécution dans l’étendue du filtre.

Pour plus d’informations sur l’ordre d’exécution des filtres d’actions personnalisées, consultez cet article MSDN : (https://msdn.microsoft.com/library/dd381609(v=vs.98).aspx).

Tâche 1 : Création d’un filtre d’action personnalisé

Dans cette tâche, vous allez créer un filtre d’action personnalisé à injecter dans la classe StoreController, en apprenant à gérer l’ordre d’exécution des filtres.

  1. Ouvrez la solution Begin située dans le dossier \Source\Ex02-ManagingMultipleActionFilters\Begin. Sinon, vous pouvez continuer à utiliser la solution De fin obtenue en effectuant l’exercice précédent.

    1. Si vous avez ouvert la solution Begin fournie, vous devez télécharger des packages NuGet manquants avant de continuer. Pour ce faire, cliquez sur le menu Projet et sélectionnez Gérer les packages NuGet.

    2. Dans la boîte de dialogue Gérer les packages NuGet, cliquez sur Restaurer pour télécharger les packages manquants.

    3. Enfin, générez la solution en cliquant sur Générer | la solution.

      Remarque

      L’un des avantages de l’utilisation de NuGet est que vous n’avez pas à expédier toutes les bibliothèques dans votre projet, ce qui réduit la taille du projet. Avec NuGet Power Tools, en spécifiant les versions du package dans le fichier Packages.config, vous pourrez télécharger toutes les bibliothèques requises la première fois que vous exécutez le projet. C’est pourquoi vous devrez exécuter ces étapes après avoir ouvert une solution existante à partir de ce labo.

      Pour plus d’informations, consultez cet article : https://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages.

  2. Ajoutez une nouvelle classe C# dans le dossier Filters et nommez-la MyNewCustomActionFilter.cs

  3. Ouvrez MyNewCustomActionFilter.cs et ajoutez une référence à System.Web.Mvc et à l’espace de noms MvcMusicStore.Models :

    (Extrait de code - ASP.NET filtres d’action personnalisés MVC 4 - Ex2-MyNewCustomActionFilterNamespaces)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using MvcMusicStore.Models;
    
  4. Remplacez la déclaration de classe par défaut par le code suivant.

    (Extrait de code - ASP.NET filtres d’actions personnalisées MVC 4 - Ex2-MyNewCustomActionFilterClass)

    public class MyNewCustomActionFilter : ActionFilterAttribute, IActionFilter
    {
      void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
    
      {
            // TODO: Add your acction filter's tasks here
    
            // Log Action Filter Call
            MusicStoreEntities storeDB = new MusicStoreEntities();
    
            ActionLog log = new ActionLog()
            {
                 Controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName,
                 Action = filterContext.ActionDescriptor.ActionName + " (Logged By: 
    
    MyNewCustomActionFilter)",
                 IP = filterContext.HttpContext.Request.UserHostAddress,
                 DateTime = filterContext.HttpContext.Timestamp
            };
    
            storeDB.ActionLogs.Add(log);
            storeDB.SaveChanges();
    
            this.OnActionExecuting(filterContext);
      }
    }
    

    Remarque

    Ce filtre d’action personnalisée est presque le même que celui que vous avez créé dans l’exercice précédent. La principale différence est qu’il a l’attribut « Journalisé par » mis à jour avec le nom de cette nouvelle classe pour identifier le filtre qui a inscrit le journal.

Tâche 2 : Injection d’un nouvel intercepteur de code dans la classe StoreController

Dans cette tâche, vous allez ajouter un nouveau filtre personnalisé dans la classe StoreController et exécuter la solution pour vérifier comment les deux filtres fonctionnent ensemble.

  1. Ouvrez la classe StoreController située sur MvcMusicStore\Controllers et injectez le nouveau filtre personnalisé MyNewCustomActionFilter dans la classe StoreController , comme illustré dans le code suivant.

    [MyNewCustomActionFilter]
    [CustomActionFilter]
    public class StoreController : Controller
    {
    ...
    }
    
  2. À présent, exécutez l’application pour voir comment fonctionnent ces deux filtres d’action personnalisés. Pour ce faire, appuyez sur F5 et attendez que l’application démarre.

  3. Accédez à /ActionLog pour afficher l’état initial de l’affichage du journal.

    Capture d’écran montrant l’état du suivi du journal des actions dans son état initial.

    État du suivi des journaux avant l’activité de la page

  4. Cliquez sur l’un des genres dans le menu et effectuez certaines actions, comme parcourir un album disponible.

  5. Vérifiez que cette fois ; vos visites ont été suivies deux fois : une fois pour chacun des filtres d’actions personnalisés que vous avez ajoutés dans la classe StorageController .

    Capture d’écran montrant le journal des actions avec vos visites suivies deux fois.

    Journal des actions avec activité journalisée

  6. Fermez le navigateur.

Tâche 3 : Gestion de l’ordre des filtres

Dans cette tâche, vous allez apprendre à gérer l’ordre d’exécution des filtres à l’aide de la propriété Order.

  1. Ouvrez la classe StoreController située sur MvcMusicStore\Controllers et spécifiez la propriété Order dans les deux filtres comme indiqué ci-dessous.

    [MyNewCustomActionFilter(Order = 2)]
    [CustomActionFilter(Order = 1)]
    public class StoreController : Controller
    {
    ...
    }
    
  2. À présent, vérifiez comment les filtres sont exécutés en fonction de la valeur de sa propriété Order. Vous constaterez que le filtre avec la plus petite valeur Order (CustomActionFilter) est le premier qui est exécuté. Appuyez sur F5 et attendez que l’application démarre.

  3. Accédez à /ActionLog pour afficher l’état initial de l’affichage du journal.

    Capture d’écran montrant le journal des actions avant l’activité de page.

    État du suivi des journaux avant l’activité de la page

  4. Cliquez sur l’un des genres dans le menu et effectuez certaines actions, comme parcourir un album disponible.

  5. Vérifiez que cette fois, vos visites ont été suivies par la valeur Order des filtres : Les journaux CustomActionFilter ont d’abord été suivis.

    Capture d’écran montrant le journal des actions avec l’activité triée par CustomActionFilter.

    Journal des actions avec activité journalisée

  6. À présent, vous allez mettre à jour la valeur de commande des filtres et vérifier la façon dont l’ordre de journalisation change. Dans la classe StoreController , mettez à jour la valeur Order des filtres comme indiqué ci-dessous.

    [MyNewCustomActionFilter(Order = 1)]
    [CustomActionFilter(Order = 2)]
    public class StoreController : Controller
    {
    ...
    }
    
  7. Réexécutez l’application en appuyant sur F5.

  8. Cliquez sur l’un des genres dans le menu et effectuez certaines actions, comme parcourir un album disponible.

  9. Vérifiez que cette fois, les journaux créés par le filtre MyNewCustomActionFilter s’affichent en premier.

    Capture d’écran montrant le journal des actions avec les journaux créés par le filtre spécifié en premier.

    Journal des actions avec activité journalisée

Tâche 4 : Inscription de filtres globalement

Dans cette tâche, vous allez mettre à jour la solution pour inscrire le nouveau filtre (MyNewCustomActionFilter) en tant que filtre global. En procédant ainsi, elle sera déclenchée par toutes les actions effectuées dans l’application et non seulement dans les actions StoreController comme dans la tâche précédente.

  1. Dans la classe StoreController , supprimez l’attribut [MyNewCustomActionFilter] et la propriété order de [CustomActionFilter]. Il doit se présenter comme suit :

    [CustomActionFilter]
    public class StoreController : Controller
    {
    ...
    }
    
  2. Ouvrez le fichier Global.asax et recherchez la méthode Application_Start . Notez que chaque fois que l’application démarre, elle inscrit les filtres globaux en appelant la méthode RegisterGlobalFilters dans la classe FilterConfig .

    Inscription de filtres globaux dans Global.asax

    Inscription de filtres globaux dans Global.asax

  3. Ouvrez FilterConfig.cs fichier dans App_Start dossier.

  4. Ajoutez une référence à l’utilisation de System.Web.Mvc ; à l’aide de MvcMusicStore.Filters ; Namespace.

    using System.Web.Mvc;
    using MvcMusicStore.Filters;
    
  5. Mettez à jour la méthode RegisterGlobalFilters en ajoutant votre filtre personnalisé. Pour ce faire, ajoutez le code mis en surbrillance :

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
        filters.Add(new MyNewCustomActionFilter());
    }
    
  6. Exécutez l’application en appuyant sur F5.

  7. Cliquez sur l’un des genres dans le menu et effectuez certaines actions, comme parcourir un album disponible.

  8. Vérifiez que maintenant [MyNewCustomActionFilter] est injecté dans HomeController et ActionLogController également.

    Capture d’écran montrant le journal des actions dans lequel vous pouvez vérifier votre nouveau filtre personnalisé.

    Journal des actions avec activité globale journalisée

Remarque

En outre, vous pouvez déployer cette application sur les sites web Windows Azure en suivant l’annexe B : publication d’une application ASP.NET MVC 4 à l’aide du déploiement web.


Résumé

En effectuant ce laboratoire pratique, vous avez appris à étendre un filtre d’action pour exécuter des actions personnalisées. Vous avez également appris à injecter n’importe quel filtre dans vos contrôleurs de page. Les concepts suivants ont été utilisés :

  • Comment créer des filtres d’action personnalisée avec la classe ASP.NET ActionFilterAttribute MVC
  • Comment injecter des filtres dans des contrôleurs MVC ASP.NET
  • Comment gérer l’ordre des filtres à l’aide de la propriété Order
  • Comment inscrire des filtres globalement

Annexe A : Installation de Visual Studio Express 2012 pour le web

Vous pouvez installer Microsoft Visual Studio Express 2012 pour Web ou une autre version « Express » à l’aide de Microsoft Web Platform Installer. Les instructions suivantes vous guident tout au long des étapes requises pour installer Visual Studio Express 2012 pour Web à l’aide de Microsoft Web Platform Installer.

  1. Accédez à /iis/extensions/introduction-to-iis-express/iis-express-overview ?linkid=9810169. Sinon, si vous avez déjà installé Web Platform Installer, vous pouvez l’ouvrir et rechercher le produit « Visual Studio Express 2012 for Web with Windows Azure SDK ».

  2. Cliquez sur Installer maintenant. Si vous n’avez pas web Platform Installer , vous êtes redirigé pour le télécharger et l’installer en premier.

  3. Une fois web Platform Installer ouvert, cliquez sur Installer pour démarrer l’installation.

    Installer Visual Studio Express

    Installer Visual Studio Express

  4. Lisez toutes les licences et conditions de tous les produits, puis cliquez sur J’accepte pour continuer.

    Acceptation des termes du contrat de licence

    Acceptation des termes du contrat de licence

  5. Attendez que le processus de téléchargement et d’installation soit terminé.

    Progression de l’installation

    Progression de l’installation

  6. Une fois l’installation terminée, cliquez sur Terminer.

    Installation terminée

    Installation terminée

  7. Cliquez sur Quitter pour fermer Web Platform Installer.

  8. Pour ouvrir Visual Studio Express pour le web, accédez à l’écran d’accueil et commencez à écrire « VS Express », puis cliquez sur la vignette VS Express pour Web.

    Vignette VS Express pour web

    Vignette VS Express pour web

Annexe B : Publication d’une application MVC 4 ASP.NET à l’aide du déploiement web

Cette annexe vous montre comment créer un site web à partir du portail de gestion Windows Azure et publier l’application que vous avez obtenue en suivant le labo, en tirant parti de la fonctionnalité de publication Web Deploy fournie par Windows Azure.

Tâche 1 : création d’un site web à partir du portail Windows Azure

  1. Accédez au portail de gestion Windows Azure et connectez-vous à l’aide des informations d’identification Microsoft associées à votre abonnement.

    Remarque

    Avec Windows Azure, vous pouvez héberger gratuitement 10 sites web ASP.NET, puis effectuer une mise à l’échelle à mesure que votre trafic augmente. Vous pouvez vous inscrire ici.

    Connectez-vous à Windows Portail Azure

    Se connecter au portail de gestion Windows Azure

  2. Cliquez sur Nouveau dans la barre de commandes.

    Création d’un site web

    Création d’un site web

  3. Cliquez sur Site web de calcul | . Sélectionnez ensuite l’option Création rapide. Fournissez une URL disponible pour le nouveau site web, puis cliquez sur Créer un site web.

    Remarque

    Un site web Windows Azure est l’hôte d’une application web s’exécutant dans le cloud que vous pouvez contrôler et gérer. L’option Création rapide vous permet de déployer une application web terminée sur le site web Windows Azure à partir de l’extérieur du portail. Il n’inclut pas les étapes de configuration d’une base de données.

    Création d’un site web à l’aide de la création rapide

    Création d’un site web à l’aide de la création rapide

  4. Attendez que le nouveau site web soit créé.

  5. Une fois le site web créé, cliquez sur le lien sous la colonne URL . Vérifiez que le nouveau site web fonctionne.

    Navigation vers le nouveau site web

    Navigation vers le nouveau site web

    Site web en cours d’exécution

    Site web en cours d’exécution

  6. Revenez au portail et cliquez sur le nom du site web sous la colonne Nom pour afficher les pages de gestion.

    Ouverture des pages de gestion de site web

    Ouverture des pages de gestion des sites web

  7. Dans la page Tableau de bord , sous la section Aperçu rapide, cliquez sur le lien Télécharger le profil de publication.

    Remarque

    Le profil de publication contient toutes les informations requises pour publier une application web sur un site web Windows Azure pour chaque méthode de publication activée. Le profil de publication contient les URL, les informations d’identification de l’utilisateur et les chaînes de base de données requises pour se connecter à chacun des points de terminaison pour lesquels une méthode de publication est activée. Microsoft WebMatrix 2, Microsoft Visual Studio Express pour le web et Microsoft Visual Studio 2012 prennent en charge la lecture des profils de publication pour automatiser la configuration de ces programmes pour publier des applications web sur des sites web Windows Azure.

    Téléchargement du profil de publication du site web

    Téléchargement du profil de publication du site web

  8. Téléchargez le fichier de profil de publication à un emplacement connu. Dans cet exercice, vous allez voir comment utiliser ce fichier pour publier une application web sur un site Web Windows Azure à partir de Visual Studio.

    Enregistrement du fichier de profil de publication

    Enregistrement du fichier de profil de publication

Tâche 2 : configuration du serveur de base de données

Si votre application utilise des bases de données SQL Server, vous devez créer un serveur SQL Database. Si vous souhaitez déployer une application simple qui n’utilise pas SQL Server, vous pouvez ignorer cette tâche.

  1. Vous aurez besoin d’un serveur SQL Database pour stocker la base de données d’application. Vous pouvez afficher les serveurs SQL Database à partir de votre abonnement dans le portail de gestion Windows Azure dans le tableau de bord des serveurs sql Databases | Server. | Si vous n’avez pas de serveur créé, vous pouvez en créer un à l’aide du bouton Ajouter dans la barre de commandes. Notez le nom et l’URL du serveur, le nom de connexion administrateur et le mot de passe, car vous les utiliserez dans les tâches suivantes. Ne créez pas encore la base de données, car elle sera créée dans une phase ultérieure.

    Tableau de bord sql Database Server

    Tableau de bord sql Database Server

  2. Dans la tâche suivante, vous allez tester la connexion de base de données à partir de Visual Studio, pour cette raison, vous devez inclure votre adresse IP locale dans la liste des adresses IP autorisées du serveur. Pour ce faire, cliquez sur Configurer, sélectionnez l’adresse IP à partir de l’adresse IP du client actuel et collez-la dans les zones de texte Adresse IP de début et adresse IP de fin, puis cliquez sur le add-client-ip-address-ok-button bouton.

    Ajout de l’adresse IP du client

    Ajout de l’adresse IP du client

  3. Une fois l’adresse IP du client ajoutée à la liste des adresses IP autorisées, cliquez sur Enregistrer pour confirmer les modifications.

    Confirmer les modifications

    Confirmer les modifications

Tâche 3 : publication d’une application ASP.NET MVC 4 à l’aide du déploiement web

  1. Revenez à la solution ASP.NET MVC 4. Dans le Explorateur de solutions, cliquez avec le bouton droit sur le projet de site web, puis sélectionnez Publier.

    Publication de l’application

    Publication du site web

  2. Importez le profil de publication que vous avez enregistré dans la première tâche.

    Importation du profil de publication

    Importation du profil de publication

  3. Cliquez sur Valider la connexion. Une fois la validation terminée, cliquez sur Suivant.

    Remarque

    La validation est terminée une fois qu’une coche verte s’affiche en regard du bouton Valider la connexion.

    Validation de la connexion

    Validation de la connexion

  4. Dans la page Paramètres , sous la section Bases de données , cliquez sur le bouton en regard de la zone de texte de votre connexion de base de données (par exemple, DefaultConnection).

    Configuration du déploiement web

    Configuration du déploiement web

  5. Configurez la connexion de base de données comme suit :

    • Dans le nom du serveur, tapez votre URL de serveur SQL Database à l’aide du préfixe tcp : .

    • Dans Le nom d’utilisateur, tapez le nom de connexion de votre administrateur de serveur.

    • Dans Mot de passe, tapez le mot de passe de connexion de votre administrateur de serveur.

    • Tapez un nouveau nom de base de données.

      Configuration des chaîne de connexion de destination

      Configuration des chaîne de connexion de destination

  6. Cliquez ensuite sur OK. Lorsque vous êtes invité à créer la base de données, cliquez sur Oui.

    Création de la base de données

    Création de la base de données

  7. Le chaîne de connexion que vous utiliserez pour vous connecter à SQL Database dans Windows Azure s’affiche dans la zone de texte Connexion par défaut. Cliquez ensuite sur Suivant.

    Chaîne de connexion pointant vers SQL Database

    Chaîne de connexion pointant vers SQL Database

  8. Dans la page Aperçu , cliquez sur Publier.

    Publication de l’application web

    Publication de l’application web

  9. Une fois le processus de publication terminé, votre navigateur par défaut ouvre le site web publié.

Annexe C : Utilisation d’extraits de code

Avec les extraits de code, vous avez tout le code dont vous avez besoin à portée de main. Le document lab vous indique exactement quand vous pouvez les utiliser, comme illustré dans la figure suivante.

Utilisation des extraits de code Visual Studio pour insérer du code dans votre projet

Utilisation des extraits de code Visual Studio pour insérer du code dans votre projet

Pour ajouter un extrait de code à l’aide du clavier (C# uniquement)

  1. Placez le curseur dans lequel vous souhaitez insérer le code.
  2. Commencez à taper le nom de l’extrait de code (sans espaces ou traits d’union).
  3. Regardez comme IntelliSense affiche les noms des extraits de code correspondants.
  4. Sélectionnez l’extrait de code correct (ou continuez à taper jusqu’à ce que le nom de l’extrait de code entier soit sélectionné).
  5. Appuyez deux fois sur tabulation pour insérer l’extrait de code à l’emplacement du curseur.

Commencez à taper le nom de l’extrait de code

Commencez à taper le nom de l’extrait de code

Appuyez sur Tab pour sélectionner l’extrait de code mis en surbrillance

Appuyez sur Tab pour sélectionner l’extrait de code mis en surbrillance

Appuyez de nouveau sur Tab et l’extrait de code se développe

Appuyez de nouveau sur Tab et l’extrait de code se développe

Pour ajouter un extrait de code à l’aide de la souris (C#, Visual Basic et XML) 1. Cliquez avec le bouton droit sur l’emplacement où vous souhaitez insérer l’extrait de code.

  1. Sélectionnez Insérer un extrait de code suivi de mes extraits de code.
  2. Sélectionnez l’extrait de code approprié dans la liste en cliquant dessus.

Cliquez avec le bouton droit sur l’emplacement où vous souhaitez insérer l’extrait de code, puis sélectionnez Insérer un extrait de code

Cliquez avec le bouton droit sur l’emplacement où vous souhaitez insérer l’extrait de code, puis sélectionnez Insérer un extrait de code

Sélectionnez l’extrait de code approprié dans la liste, en cliquant dessus

Sélectionnez l’extrait de code approprié dans la liste, en cliquant dessus