Share via


Filtri per azioni personalizzati di ASP.NET MVC 4

In base al team dei campi Web

Scaricare il Kit di formazione per i campi Web

ASP.NET MVC fornisce filtri azione per l'esecuzione della logica di filtro prima o dopo la chiamata di un metodo di azione. I filtri azioni sono attributi personalizzati che forniscono mezzi dichiarativi per aggiungere il comportamento di pre-azione e post-azione ai metodi di azione del controller.

In questo lab pratico si creerà un attributo di filtro azioni personalizzato nella soluzione MvcMusicStore per intercettare le richieste del controller e registrare l'attività di un sito in una tabella di database. Sarà possibile aggiungere il filtro di registrazione tramite inserimento a qualsiasi controller o azione. Infine, verrà visualizzata la visualizzazione log che mostra l'elenco dei visitatori.

Questo lab pratico presuppone la conoscenza di base di ASP.NET MVC. Se in precedenza non è stato usato ASP.NET MVC , è consigliabile eseguire ASP.NET lab pratico MVC 4 .

Nota

Tutti i frammenti e il codice di esempio sono inclusi nel Web Camps Training Kit, disponibile in Microsoft-Web/WebCampTrainingKit Releases. Il progetto specifico di questo lab è disponibile in ASP.NET filtri azione personalizzati MVC 4.

Obiettivi

In questo lab di Hands-On si apprenderà come:

  • Creare un attributo filtro azioni personalizzato per estendere le funzionalità di filtro
  • Applicare un attributo di filtro personalizzato tramite inserimento a un livello specifico
  • Registrare un filtro azione personalizzato a livello globale

Prerequisiti

Per completare questo lab, è necessario disporre degli elementi seguenti:

Installazione

Installazione di frammenti di codice

Per praticità, gran parte del codice che si gestirà in questo lab è disponibile come frammenti di codice di Visual Studio. Per installare i frammenti di codice, eseguire il file .\Source\Setup\CodeSnippets.vsi .

Se non si ha familiarità con i frammenti di codice di Visual Studio e si vuole imparare a usarli, è possibile fare riferimento all'appendice di questo documento "Appendice C: Uso dei frammenti di codice".


Esercizi

Questo Hands-On Lab è costituito dagli esercizi seguenti:

  1. Esercizio 1: Registrazione delle azioni
  2. Esercizio 2: Gestione di più filtri azione

Tempo stimato per il completamento del lab: 30 minuti.

Nota

Ogni esercizio è accompagnato da una cartella End contenente la soluzione risultante che è necessario ottenere dopo aver completato gli esercizi. È possibile usare questa soluzione come guida se sono necessarie altre informazioni su come eseguire gli esercizi.

Esercizio 1: Azioni di registrazione

In questo esercizio si apprenderà come creare un filtro del log azioni personalizzato usando ASP.NET provider di filtri MVC 4. A tale scopo, si applicherà un filtro di registrazione al sito MusicStore che registrerà tutte le attività nei controller selezionati.

Il filtro estende ActionFilterAttributeClass ed esegue l'override del metodo OnActionExecuting per intercettare ogni richiesta e quindi eseguire le azioni di registrazione. Le informazioni di contesto sulle richieste HTTP, l'esecuzione di metodi, risultati e parametri verranno fornite da ASP.NET classe MVC ActionExecutingContext.

Nota

ASP.NET MVC 4 include anche provider di filtri predefiniti che è possibile usare senza creare un filtro personalizzato. ASP.NET MVC 4 fornisce i tipi di filtri seguenti:

  • Filtro di autorizzazione , che prende decisioni di sicurezza sull'esecuzione di un metodo di azione, ad esempio l'esecuzione dell'autenticazione o la convalida delle proprietà della richiesta.
  • Filtro azione , che esegue il wrapping dell'esecuzione del metodo di azione. Questo filtro può eseguire ulteriore elaborazione, ad esempio fornire dati aggiuntivi al metodo di azione, controllare il valore restituito o annullare l'esecuzione del metodo di azione
  • Filtro dei risultati, che esegue il wrapping dell'esecuzione dell'oggetto ActionResult. Questo filtro può eseguire un'ulteriore elaborazione del risultato, ad esempio la modifica della risposta HTTP.
  • Filtro eccezioni , che viene eseguito se è presente un'eccezione non gestita generata in un punto qualsiasi nel metodo di azione, a partire dai filtri di autorizzazione e termina con l'esecuzione del risultato. I filtri eccezioni possono essere utilizzati per attività quali la registrazione o la visualizzazione di una pagina di errore.

Per altre informazioni sui provider di filtri, visitare questo collegamento MSDN: (https://msdn.microsoft.com/library/dd410209.aspx) .

Informazioni sulla funzionalità di registrazione delle applicazioni MVC Music Store

Questa soluzione Music Store include una nuova tabella del modello di dati per la registrazione del sito , ActionLog, con i campi seguenti: Nome del controller che ha ricevuto una richiesta, Azione chiamata, INDIRIZZO IP client e timestamp.

Modello di dati. Tabella ActionLog.

Modello di dati - Tabella ActionLog

La soluzione offre una visualizzazione MVC ASP.NET per il log azioni disponibile in MvcMusicStores/Views/ActionLog:

Visualizzazione log azioni Visualizzazione

Visualizzazione Log azioni

Con questa determinata struttura, tutto il lavoro sarà incentrato sull'interruzione della richiesta del controller e sull'esecuzione della registrazione tramite filtri personalizzati.

Attività 1 - Creazione di un filtro personalizzato per rilevare la richiesta di un controller

In questa attività verrà creata una classe di attributi di filtro personalizzata che conterrà la logica di registrazione. A tale scopo, si estenderà ASP.NET classe MVC ActionFilterAttribute e si implementerà l'interfaccia IActionFilter.

Nota

ActionFilterAttribute è la classe di base per tutti i filtri degli attributi. Fornisce i metodi seguenti per eseguire una logica specifica dopo e prima dell'esecuzione dell'azione del controller:

  • OnActionExecuting(ActionExecutingContext filterContext): subito prima che venga chiamato il metodo di azione.
  • OnActionExecuted(ActionExecutedContext filterContext): dopo la chiamata del metodo di azione e prima dell'esecuzione del risultato (prima del rendering della visualizzazione).
  • OnResultExecuting(ResultExecutingContext filterContext): subito prima dell'esecuzione del risultato (prima del rendering della visualizzazione).
  • OnResultExecuted(ResultExecutedContext filterContext): dopo l'esecuzione del risultato (dopo il rendering della visualizzazione).

Eseguendo l'override di uno di questi metodi in una classe derivata, è possibile eseguire codice di filtro personalizzato.

  1. Aprire la soluzione Begin disponibile nella cartella \Source\Ex01-LoggingActions\Begin .

    1. Prima di continuare, sarà necessario scaricare alcuni pacchetti NuGet mancanti. A tale scopo, fare clic sul menu Progetto e selezionare Gestisci pacchetti NuGet.

    2. Nella finestra di dialogo Gestisci pacchetti NuGet fare clic su Ripristina per scaricare i pacchetti mancanti.

    3. Compilare infine la soluzione facendo clic su Compila | soluzione.

      Nota

      Uno dei vantaggi dell'uso di NuGet è che non è necessario spedire tutte le librerie nel progetto, riducendo le dimensioni del progetto. Con NuGet Power Tools, specificando le versioni del pacchetto nel file Packages.config, sarà possibile scaricare tutte le librerie necessarie la prima volta che si esegue il progetto. Questo è il motivo per cui sarà necessario eseguire questi passaggi dopo aver aperto una soluzione esistente da questo lab.

      Per altre informazioni, vedere questo articolo: https://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages.

  2. Aggiungere una nuova classe C# nella cartella Filtri e denominarla CustomActionFilter.cs. Questa cartella archivierà tutti i filtri personalizzati.

  3. Aprire CustomActionFilter.cs e aggiungere un riferimento agli spazi dei nomi System.Web.Mvc e MvcMusicStore.Models :

    (Frammento di codice - ASP.NET filtri azione personalizzati MVC 4 - Ex1-CustomActionFilterNamespaces)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using MvcMusicStore.Models;
    
  4. Ereditare la classe CustomActionFilter da ActionFilterAttribute e quindi rendere la classe CustomActionFilter implementare l'interfaccia IActionFilter .

    //...
    namespace MvcMusicStore.Filters
    {
        public class CustomActionFilter : ActionFilterAttribute, IActionFilter
        {
            //...
        }
    }
    
  5. Rendere la classe CustomActionFilter eseguire l'override del metodo OnActionExecuting e aggiungere la logica necessaria per registrare l'esecuzione del filtro. A tale scopo, aggiungere il codice evidenziato seguente all'interno della classe CustomActionFilter .

    (Frammento di codice - ASP.NET filtri azione personalizzati 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);
            }
        }
    }
    

    Nota

    Il metodo OnActionExecuting usa Entity Framework per aggiungere un nuovo registro ActionLog. Crea e riempie una nuova istanza di entità con le informazioni sul contesto di filterContext.

    Per altre informazioni sulla classe ControllerContext , vedere msdn.

Attività 2 - Inserimento di un intercettore di codice nella classe controller di archiviazione

In questa attività si aggiungerà il filtro personalizzato inserendolo in tutte le classi controller e le azioni del controller che verranno registrate. Ai fini di questo esercizio, la classe Store Controller avrà un log.

Il metodo OnActionExecuting da ActionLogFilterAttribute viene eseguito quando viene chiamato un elemento inserito.

È anche possibile intercettare un metodo controller specifico.

  1. Aprire StoreController in MvcMusicStore\Controllers e aggiungere un riferimento allo spazio dei nomi Filters :

    using System.Linq;
    using System.Web.Mvc;
    using MvcMusicStore.Models;
    using MvcMusicStore.Filters;
    
  2. Inserire il filtro personalizzato CustomActionFilter nella classe StoreController aggiungendo l'attributo [CustomActionFilter] prima della dichiarazione di classe.

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

    Nota

    Quando un filtro viene inserito in una classe controller, vengono inserite anche tutte le relative azioni. Se si vuole applicare il filtro solo per un set di azioni, è necessario inserire [CustomActionFilter] a ognuno di essi:

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

Attività 3 - Esecuzione dell'applicazione

In questa attività si verificherà che il filtro di registrazione funzioni. Si avvierà l'applicazione e si visiterà lo store, quindi si verificheranno le attività registrate.

  1. Premere F5 per eseguire l'applicazione.

  2. Passare a /ActionLog per visualizzare lo stato iniziale della visualizzazione log:

    Screenshot che mostra lo stato del log azioni prima dell'attività della pagina.

    Stato dello strumento di registrazione prima dell'attività della pagina

    Nota

    Per impostazione predefinita, visualizzerà sempre un elemento generato durante il recupero dei generi esistenti per il menu.

    A scopo di semplicità, la tabella ActionLog viene eseguita ogni volta che viene eseguita l'applicazione in modo che visualizzi solo i log della verifica di ogni attività specifica.

    Potrebbe essere necessario rimuovere il codice seguente dal metodo Session_Start (nella classe Global.asax ), per salvare un log cronologico per tutte le azioni eseguite nel controller dello Store.

    // Clean up Logs Table
    MusicStoreEntities storeDB = new MusicStoreEntities();
    foreach (var log in 
    
    storeDB.ActionLogs.ToList())
    {
       storeDB.ActionLogs.Remove(log);
    }
    
    storeDB.SaveChanges();
    
  3. Fare clic su uno dei Generi dal menu ed eseguire alcune azioni, ad esempio sfogliando un album disponibile.

  4. Passare a /ActionLog e se il log è vuoto premere F5 per aggiornare la pagina. Verificare che le visite siano state rilevate:

    Screenshot che mostra il log azioni in cui è possibile verificare le visite.

    Log azioni con attività registrate

Esercizio 2: Gestione di più filtri azione

In questo esercizio si aggiungerà un secondo filtro azione personalizzato alla classe StoreController e si definirà l'ordine specifico in cui verranno eseguiti entrambi i filtri. Si aggiornerà quindi il codice per registrare il filtro Globalmente.

Esistono diverse opzioni da tenere in considerazione quando si definisce l'ordine di esecuzione dei filtri. Ad esempio, la proprietà Order e l'ambito dei filtri:

È possibile definire un ambito per ognuno dei filtri, ad esempio, è possibile definire l'ambito di tutti i filtri azione da eseguire all'interno dell'ambito controller e tutti i filtri di autorizzazione da eseguire nell'ambito globale. Gli ambiti hanno un ordine di esecuzione definito.

Inoltre, ogni filtro azione ha una proprietà Order usata per determinare l'ordine di esecuzione nell'ambito del filtro.

Per altre informazioni sull'ordine di esecuzione dei filtri azione personalizzati, visitare questo articolo MSDN: (https://msdn.microsoft.com/library/dd381609(v=vs.98).aspx).

Attività 1: Creazione di un nuovo filtro azione personalizzato

In questa attività si creerà un nuovo filtro azione personalizzato da inserire nella classe StoreController, imparando a gestire l'ordine di esecuzione dei filtri.

  1. Aprire la soluzione Begin disponibile nella cartella \Source\Ex02-ManagingMultipleActionFilters\Begin . In caso contrario, è possibile continuare a usare la soluzione End ottenuta completando l'esercizio precedente.

    1. Se è stata aperta la soluzione Begin fornita, è necessario scaricare alcuni pacchetti NuGet mancanti prima di continuare. A tale scopo, fare clic sul menu Progetto e selezionare Gestisci pacchetti NuGet.

    2. Nella finestra di dialogo Gestisci pacchetti NuGet fare clic su Ripristina per scaricare i pacchetti mancanti.

    3. Compilare infine la soluzione facendo clic su Compila | soluzione.

      Nota

      Uno dei vantaggi dell'uso di NuGet è che non è necessario spedire tutte le librerie nel progetto, riducendo le dimensioni del progetto. Con NuGet Power Tools, specificando le versioni del pacchetto nel file Packages.config, sarà possibile scaricare tutte le librerie necessarie la prima volta che si esegue il progetto. Questo è il motivo per cui sarà necessario eseguire questi passaggi dopo aver aperto una soluzione esistente da questo lab.

      Per altre informazioni, vedere questo articolo: https://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages.

  2. Aggiungere una nuova classe C# nella cartella Filtri e denominarla MyNewCustomActionFilter.cs

  3. Aprire MyNewCustomActionFilter.cs e aggiungere un riferimento a System.Web.Mvc e allo spazio dei nomi MvcMusicStore.Models :

    (Frammento di codice - ASP.NET filtri azione personalizzati MVC 4 - Ex2-MyNewCustomActionFilterNamespaces)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using MvcMusicStore.Models;
    
  4. Sostituire la dichiarazione di classe predefinita con il codice seguente.

    (Frammento di codice - ASP.NET filtri azione personalizzati 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);
      }
    }
    

    Nota

    Questo filtro azione personalizzato è quasi uguale a quello creato nell'esercizio precedente. La differenza principale è che l'attributo "Logged By" è stato aggiornato con il nome della nuova classe per identificare il filtro registrato nel log.

Attività 2: Inserimento di un nuovo intercettore di codice nella classe StoreController

In questa attività si aggiungerà un nuovo filtro personalizzato alla classe StoreController ed eseguirà la soluzione per verificare il funzionamento di entrambi i filtri.

  1. Aprire la classe StoreController in MvcMusicStore\Controllers e inserire il nuovo filtro personalizzato MyNewCustomActionFilter nella classe StoreController come illustrato nel codice seguente.

    [MyNewCustomActionFilter]
    [CustomActionFilter]
    public class StoreController : Controller
    {
    ...
    }
    
  2. A questo punto, eseguire l'applicazione per vedere come funzionano questi due filtri azione personalizzati. A tale scopo, premere F5 e attendere l'avvio dell'applicazione.

  3. Passare a /ActionLog per visualizzare lo stato iniziale della visualizzazione log.

    Screenshot che mostra lo stato di Action Log Tracker nello stato iniziale.

    Stato dello strumento di registrazione prima dell'attività della pagina

  4. Fare clic su uno dei Generi dal menu ed eseguire alcune azioni, ad esempio sfogliando un album disponibile.

  5. Controlla che questa volta; le visite sono state rilevate due volte: una volta per ogni filtro azione personalizzato aggiunto nella classe StorageController .

    Screenshot che mostra il log azioni con le visite rilevate due volte.

    Log azioni con attività registrate

  6. Chiudere il browser.

Attività 3: Gestione dell'ordinamento dei filtri

In questa attività si apprenderà come gestire l'ordine di esecuzione dei filtri usando la proprietà Order.

  1. Aprire la classe StoreController in MvcMusicStore\Controllers e specificare la proprietà Order in entrambi i filtri, come illustrato di seguito.

    [MyNewCustomActionFilter(Order = 2)]
    [CustomActionFilter(Order = 1)]
    public class StoreController : Controller
    {
    ...
    }
    
  2. Verificare ora come vengono eseguiti i filtri in base al valore della proprietà Order. Si scoprirà che il filtro con il valore order più piccolo (CustomActionFilter) è il primo che viene eseguito. Premere F5 e attendere l'avvio dell'applicazione.

  3. Passare a /ActionLog per visualizzare lo stato iniziale della visualizzazione log.

    Screenshot che mostra il log azioni prima dell'attività della pagina.

    Stato dello strumento di registrazione prima dell'attività della pagina

  4. Fare clic su uno dei Generi dal menu ed eseguire alcune azioni, ad esempio sfogliando un album disponibile.

  5. Verificare che questa volta le visite siano state rilevate in base al valore order dei filtri: CustomActionFilter logs' first.

    Screenshot che mostra il log azioni con l'attività ordinata da CustomActionFilter.

    Log azioni con attività registrate

  6. A questo scopo, si aggiornerà il valore dell'ordine dei filtri e si verificherà la modalità di modifica dell'ordine di registrazione. Nella classe StoreController aggiornare il valore Order dei filtri, come illustrato di seguito.

    [MyNewCustomActionFilter(Order = 1)]
    [CustomActionFilter(Order = 2)]
    public class StoreController : Controller
    {
    ...
    }
    
  7. Eseguire di nuovo l'applicazione premendo F5.

  8. Fare clic su uno dei Generi dal menu ed eseguire alcune azioni, ad esempio sfogliando un album disponibile.

  9. Verificare che questa volta i log creati dal filtro MyNewCustomActionFilter siano visualizzati per primi.

    Screenshot che mostra prima il log azioni con i log creati dal filtro specificato.

    Log azioni con attività registrate

Attività 4: Registrazione dei filtri a livello globale

In questa attività si aggiornerà la soluzione per registrare il nuovo filtro (MyNewCustomActionFilter) come filtro globale. In questo modo, verrà attivato da tutte le azioni eseguite nell'applicazione e non solo in StoreController come nell'attività precedente.

  1. Nella classe StoreController rimuovere l'attributo [MyNewCustomActionFilter] e la proprietà order da [CustomActionFilter]. Il messaggio sarà simile al seguente:

    [CustomActionFilter]
    public class StoreController : Controller
    {
    ...
    }
    
  2. Aprire il file Global.asax e individuare il metodo Application_Start . Si noti che ogni volta che l'applicazione avvia la registrazione dei filtri globali chiamando il metodo RegisterGlobalFilters all'interno della classe FilterConfig .

    Registrazione di filtri globali in Global.asax

    Registrazione di filtri globali in Global.asax

  3. Aprire il file FilterConfig.cs all'interno della cartella App_Start .

  4. Aggiungere un riferimento a usando System.Web.Mvc; utilizzando MvcMusicStore.Filters; Namespace.

    using System.Web.Mvc;
    using MvcMusicStore.Filters;
    
  5. Aggiornare il metodo RegisterGlobalFilters aggiungendo il filtro personalizzato. A tale scopo, aggiungere il codice evidenziato:

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
        filters.Add(new MyNewCustomActionFilter());
    }
    
  6. Eseguire l'applicazione premendo F5.

  7. Fare clic su uno dei Generi dal menu ed eseguire alcune azioni, ad esempio sfogliando un album disponibile.

  8. Verificare che ora [MyNewCustomActionFilter] sia stato inserito anche in HomeController e ActionLogController.

    Screenshot che mostra il log azioni in cui è possibile controllare il nuovo filtro personalizzato.

    Log azioni con attività globali registrate

Nota

È anche possibile distribuire questa applicazione nei siti Web di Windows Azure seguendo l'Appendice B: Pubblicazione di un'applicazione ASP.NET MVC 4 tramite Distribuzione Web.


Riepilogo

Completando questo lab Hands-On si è appreso come estendere un filtro azioni per eseguire azioni personalizzate. Si è anche appreso come inserire qualsiasi filtro nei controller di pagina. Sono stati usati i concetti seguenti:

  • Come creare filtri azione personalizzata con la classe ASP.NET MVC ActionFilterAttribute
  • Come inserire filtri nei controller MVC ASP.NET
  • Come gestire l'ordinamento dei filtri usando la proprietà Order
  • Come registrare i filtri a livello globale

Appendice A: Installazione di Visual Studio Express 2012 per Il Web

È possibile installare Microsoft Visual Studio Express 2012 per Il Web o un'altra versione "Express" usando il Installazione guidata piattaforma Web Microsoft. Le istruzioni seguenti illustrano i passaggi necessari per installare Visual Studio Express 2012 per Il Web usando Installazione guidata piattaforma Web Microsoft.

  1. Passare a https://go.microsoft.com/?linkid=9810169. In alternativa, se è già stato installato Il programma di installazione della piattaforma Web, è possibile aprirlo e cercare il prodotto "Visual Studio Express 2012 per Il Web con Windows Azure SDK".

  2. Fare clic su Installa adesso. Se non si dispone di Installazione guidata piattaforma Web , si verrà reindirizzati per scaricarlo e installarlo per primo.

  3. Dopo aver aperto Il programma di installazione della piattaforma Web , fare clic su Installa per avviare l'installazione.

    Installare Visual Studio Express Installare Visual Studio Express

    Installare Visual Studio Express

  4. Leggere tutte le licenze e le condizioni dei prodotti e fare clic su Accetto per continuare.

    Accettazione delle condizioni di licenza

    Accettazione delle condizioni di licenza

  5. Attendere il completamento del processo di download e installazione.

    Stato dell'installazione

    Stato dell'installazione

  6. Al termine dell'installazione, fare clic su Fine.

    Installazione completata

    Installazione completata

  7. Fare clic su Esci per chiudere Il programma di installazione della piattaforma Web.

  8. Per aprire Visual Studio Express per Il Web, passare alla schermata Start e iniziare a scrivere "VS Express", quindi fare clic sul riquadro VS Express for Web.

    Riquadro di VS Express per Il Web

    Riquadro di VS Express per Il Web

Appendice B: Pubblicazione di un'applicazione ASP.NET MVC 4 tramite distribuzione Web

Questa appendice illustra come creare un nuovo sito Web dal portale di gestione di Windows Azure e pubblicare l'applicazione ottenuta seguendo il lab, sfruttando la funzionalità di pubblicazione Distribuzione Web fornita da Windows Azure.

Attività 1 - Creazione di un nuovo sito Web dal portale di Windows Azure

  1. Passare al portale di gestione di Windows Azure e accedere usando le credenziali Microsoft associate alla sottoscrizione.

    Nota

    Con Windows Azure è possibile ospitare gratuitamente 10 siti Web ASP.NET e quindi ridimensionare man mano che aumenta il traffico. È possibile iscriversi qui.

    Accedere a Windows portale di Azure

    Accedere al portale di gestione di Windows Azure

  2. Fare clic su Nuovo sulla barra dei comandi.

    Creazione di un nuovo sito Web Creazione

    Creazione di un nuovo sito Web

  3. Fare clic su Calcolo | sito Web. Selezionare quindi l'opzione Creazione rapida . Specificare un URL disponibile per il nuovo sito Web e fare clic su Crea sito Web.

    Nota

    Un sito Web di Windows Azure è l'host di un'applicazione Web in esecuzione nel cloud che è possibile controllare e gestire. L'opzione Creazione rapida consente di distribuire un'applicazione Web completata nel sito Web di Windows Azure dall'esterno del portale. Non include i passaggi per la configurazione di un database.

    Creazione di un nuovo sito Web con creazione rapida

    Creazione di un nuovo sito Web con creazione rapida

  4. Attendere la creazione del nuovo sito Web .

  5. Dopo aver creato il sito Web, fare clic sul collegamento nella colonna URL . Verificare che il nuovo sito Web funzioni.

    Esplorazione del nuovo sito Web

    Esplorazione del nuovo sito Web

    Sito Web che esegue

    Sito Web in esecuzione

  6. Indietro al portale e fare clic sul nome del sito Web nella colonna Nome per visualizzare le pagine di gestione.

    Apertura delle pagine di gestione del sito Web Apertura

    Apertura delle pagine di gestione del sito Web

  7. Nella sezione riepilogo rapido della pagina Dashboard fare clic sul collegamento Scarica profilo di pubblicazione.

    Nota

    Il profilo di pubblicazione contiene tutte le informazioni necessarie per pubblicare un'applicazione Web in un sito Web di Windows Azure per ogni metodo di pubblicazione abilitato. Nel profilo di pubblicazione sono contenuti gli URL, le credenziali utente e le stringhe di database necessari per la connessione e l'autenticazione in ognuno degli endpoint per cui è abilitato un metodo di pubblicazione. Microsoft WebMatrix 2, Microsoft Visual Studio Express per il Web e Microsoft Visual Studio 2012 supportano la lettura dei profili di pubblicazione per automatizzare la configurazione di questi programmi per la pubblicazione di applicazioni Web nei siti Web di Windows Azure.

    Download del profilo di pubblicazione del sito Web Download

    Download del profilo di pubblicazione del sito Web

  8. Scaricare il file del profilo di pubblicazione in un percorso noto. Più avanti in questo esercizio si vedrà come usare questo file per pubblicare un'applicazione Web in siti Web di Windows Azure da Visual Studio.

    Salvataggio del file del profilo di pubblicazione Salvataggio

    Salvataggio del file del profilo di pubblicazione

Attività 2 - Configurazione del server di database

Se l'applicazione usa SQL Server database, sarà necessario creare un server database SQL. Se si vuole distribuire una semplice applicazione che non usa SQL Server è possibile ignorare questa attività.

  1. È necessario un server di database SQL per archiviare il database dell'applicazione. È possibile visualizzare i server database SQL dalla sottoscrizione nel portale di gestione di Windows Azure neldashboard del server deidatabase | | SQL. Se non è stato creato un server, è possibile crearne uno usando il pulsante Aggiungi sulla barra dei comandi. Prendere nota del nome del server e dell'URL, del nome di accesso e della password dell'amministratore, perché verranno usati nelle attività successive. Non creare ancora il database, perché verrà creato in una fase successiva.

    Dashboard del server database SQL

    Dashboard del server database SQL

  2. Nell'attività successiva verrà testata la connessione al database da Visual Studio, per questo motivo è necessario includere l'indirizzo IP locale nell'elenco degli indirizzi IP consentiti del server. A tale scopo, fare clic su Configura, selezionare l'indirizzo IP dall'indirizzo IP client corrente e incollarlo nelle caselle di testo Indirizzo IP iniziale e Indirizzo IP finale e fare clic sul pulsante add-client-ip-address-ok-button .

    Aggiunta dell'indirizzo IP del client

    Aggiunta dell'indirizzo IP del client

  3. Dopo aver aggiunto l'indirizzo IP client all'elenco indirizzi IP consentiti, fare clic su Salva per confermare le modifiche.

    Conferma modifiche

    Conferma modifiche

Attività 3- Pubblicazione di un'applicazione MVC 4 ASP.NET tramite distribuzione Web

  1. Indietro alla soluzione ASP.NET MVC 4. Nella Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto del sito Web e scegliere Pubblica.

    Pubblicazione dell'applicazione

    Pubblicazione del sito Web

  2. Importare il profilo di pubblicazione salvato nella prima attività.

    Importazione del profilo di pubblicazione Importazione del profilo di

    Importazione del profilo di pubblicazione

  3. Fare clic su Convalida connessione. Al termine della convalida, fare clic su Avanti.

    Nota

    La convalida viene completata dopo aver visualizzato un segno di spunta verde accanto al pulsante Convalida connessione.

    Convalida della connessione

    Convalida della connessione

  4. Nella pagina Impostazioni , nella sezione Database fare clic sul pulsante accanto alla casella di testo della connessione del database, ad esempio DefaultConnection.

    Configurazione distribuzione Web distribuzione Web

    Configurazione distribuzione Web

  5. Configurare la connessione al database come indicato di seguito:

    • Nel nome del server digitare l'URL del server database SQL usando il prefisso tcp:

    • In Nome utente digitare il nome di accesso dell'amministratore del server.

    • In Password digitare la password di accesso dell'amministratore del server.

    • Digitare un nuovo nome di database.

      Configurazione della stringa di connessione di destinazione Configurazione della stringa di

      Configurazione della stringa di connessione di destinazione

  6. Fare quindi clic su OK. Quando viene richiesto di creare il database, fare clic su .

    Creazione del database Creazione della

    Creazione del database

  7. La stringa di connessione che si userà per connettersi a database SQL in Windows Azure viene visualizzata nella casella di testo Connessione predefinita. Quindi fare clic su Avanti.

    Stringa di connessione che punta alla stringa database SQL

    Stringa di connessione che punta a database SQL

  8. Nella pagina Anteprima fare clic su Pubblica.

    Pubblicazione dell'applicazione Web Pubblicazione dell'applicazione Web

    Pubblicazione dell'applicazione Web

  9. Al termine del processo di pubblicazione, il browser predefinito aprirà il sito Web pubblicato.

Appendice C: Uso di frammenti di codice

Con i frammenti di codice, è necessario tutto il codice necessario a portata di mano. Il documento lab illustra esattamente quando è possibile usarli, come illustrato nella figura seguente.

Uso dei frammenti di codice di Visual Studio per inserire codice nel progetto Usando frammenti di codice

Uso dei frammenti di codice di Visual Studio per inserire codice nel progetto

Per aggiungere un frammento di codice usando la tastiera (solo C#)

  1. Posizionare il cursore in cui si vuole inserire il codice.
  2. Iniziare a digitare il nome del frammento di codice (senza spazi o trattini).
  3. Guarda come IntelliSense visualizza i nomi dei frammenti di codice corrispondenti.
  4. Selezionare il frammento di codice corretto (o continuare a digitare finché non viene selezionato il nome dell'intero frammento).
  5. Premere il tasto Tab due volte per inserire il frammento di codice nella posizione del cursore.

Iniziare a digitare il nome del frammento di codice Start

Iniziare a digitare il nome del frammento di codice

Premere Tab per selezionare il frammento di codice evidenziato

Premere Tab per selezionare il frammento di codice evidenziato

Premere di nuovo tabulazioni e il frammento di codice verrà di nuovo espanso

Premere di nuovo tabulazioni e il frammento di codice verrà espanso

Per aggiungere un frammento di codice usando il mouse (C#, Visual Basic e XML) 1. Fare clic con il pulsante destro del mouse su dove inserire il frammento di codice.

  1. Selezionare Inserisci frammento di codice seguito da Frammenti di codice personali.
  2. Selezionare il frammento di codice pertinente dall'elenco facendo clic su di esso.

Fare clic con il pulsante destro del mouse su dove inserire il frammento di codice e selezionare Inserisci frammento di codice fare clic con il pulsante destro del mouse su

Fare clic con il pulsante destro del mouse su dove inserire il frammento di codice e selezionare Inserisci frammento di codice

Selezionare il frammento di codice pertinente dall'elenco facendo clic su

Selezionare il frammento di codice pertinente dall'elenco facendo clic su di esso