Condividi tramite


Filtri per azioni personalizzati di ASP.NET MVC 4

Per squadra di campi Web

Scarica 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 azione 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 che tu abbia una conoscenza di base di ASP.NET MVC. Se in precedenza non è stato usato ASP.NET MVC , è consigliabile passare a ASP.NET lab pratico di MVC 4.

Nota

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

Obiettivi

In questo lab pratico si apprenderà come:

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

Prerequisiti

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

Attrezzaggio

Installazione di frammenti di codice

Per praticità, gran parte del codice che si gestirà con 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 di frammenti di codice".


Esercizi

Questo lab pratico è costituito dagli esercizi seguenti:

  1. Esercizio 1: Registrare le 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 da ottenere dopo aver completato gli esercizi. È possibile usare questa soluzione come guida se sono necessarie altre informazioni sull'utilizzo degli 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, applicherà un filtro di registrazione al sito MusicStore che registrerà tutte le attività nei controller selezionati.

Il filtro estenderà ActionFilterAttributeClass ed eseguirà l'override del metodo OnActionExecuting per intercettare ogni richiesta e quindi eseguire le azioni di registrazione. Le informazioni di contesto sulle richieste HTTP, sull'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 un'elaborazione aggiuntiva, 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'elaborazione aggiuntiva 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 delle eccezioni possono essere usati 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 di 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, 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 delle azioni disponibile in MvcMusicStores/Views/ActionLog:

Visualizzazione Log azioni

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 intercettare la richiesta di un controller

In questa attività si creerà 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 vista).

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, è 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 è 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 Filters 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 di contesto di filterContext.

    Per altre informazioni sulla classe ControllerContext , vedere msdn.

Attività 2- Inserimento di un intercettore di codice nella classe del 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 rilevamento log prima dell'attività della pagina

    Nota

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

    Ai fini della semplicità, la tabella ActionLog viene eseguita ogni volta che l'applicazione viene eseguita in modo da visualizzare 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 a livello globale.

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 che viene 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 è 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 Filters 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 ha l'attributo "Logged By" aggiornato con il nome della nuova classe per identificare quale filtro ha registrato il 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 disponibile 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. Eseguire ora l'applicazione per verificare il funzionamento di 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 dello strumento di rilevamento dei log azioni nello stato iniziale.

    Stato dello strumento di rilevamento log 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 per ogni filtro azione personalizzata 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 disponibile 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 rilevamento log 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 ordine 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à il modo in cui cambia l'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 inizia, registra i 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 FilterConfig.cs file all'interno della cartella App_Start .

  4. Aggiungere un riferimento all'uso di 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

Inoltre, è possibile distribuire questa applicazione nei siti Web di Windows Azure dopo l'Appendice B: Pubblicazione di un'applicazione ASP.NET MVC 4 tramite Distribuzione Web.


Riepilogo

Completando questo lab pratico 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 MVC ActionFilterAttribute ASP.NET
  • Come inserire filtri nei controller MVC ASP.NET
  • Come gestire l'ordinamento dei filtri tramite la proprietà Order
  • Come registrare i filtri a livello globale

Appendice A: Installazione di Visual Studio Express 2012 per 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 /iis/extensions/introduction-to-iis-express/iis-express-overview?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 for Web con Windows Azure SDK".

  2. Fare clic su Installa ora. Se non si dispone del programma di installazione della 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

  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 installazione

    Stato dell'installazione

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

    Installazione completata

    Installazione completata

  7. Fare clic su Esci per chiudere Programma di installazione piattaforma Web.

  8. Per aprire Visual Studio Express for 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 MVC 4 ASP.NET 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 il traffico cresce. È 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 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 in esecuzione

    Sito Web in esecuzione

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

    Apertura delle pagine di gestione dei siti Web

    Apertura delle pagine di gestione del sito Web

  7. Nella pagina Dashboard fare clic sul collegamento Download publish profile (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. Il profilo di pubblicazione contiene gli URL, le credenziali utente e le stringhe di database necessari per connettersi ed eseguire l'autenticazione su 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 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 del file del profilo di pubblicazione

Attività 2 - Configurazione del server di database

Se l'applicazione usa i database di SQL Server, 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 database SQL per archiviare il database dell'applicazione. È possibile visualizzare i server database SQL dalla sottoscrizione nel portale di gestione di Windows Azure nel dashboard del server dei database | | 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 amministratore e della password, 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 da Indirizzo IP client corrente e incollarlo nelle caselle di testo Start IP Address and End IP Address (Indirizzo IP iniziale e Indirizzo IP finale) e fare clic sul add-client-ip-address-ok-buttonpulsante .

    Aggiunta dell'indirizzo IP client

    Aggiunta dell'indirizzo IP 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 ASP.NET MVC 4 tramite distribuzione Web

  1. Tornare 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 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 al database, ad esempio DefaultConnection.

    Configurazione 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 di stringa di connessione di destinazione

      Configurazione di stringa di connessione di destinazione

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

    Creazione del database

    Creazione del database

  7. Il stringa di connessione che verrà usato per connettersi a database SQL in Windows Azure viene visualizzato nella casella di testo Connessione predefinita. Fare clic su Avanti.

    Stringa di connessione che punta a 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

  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 è disponibile tutto il codice necessario a portata di mano. Il documento del lab indica esattamente quando è possibile usarli, come illustrato nella figura seguente.

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

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 desidera inserire il codice.
  2. Iniziare a digitare il nome del frammento (senza spazi o trattini).
  3. Guardare come IntelliSense visualizza i nomi dei frammenti di codice corrispondenti.
  4. Selezionare il frammento corretto (o continuare a digitare fino a quando 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

Iniziare a digitare il nome del frammento

Premere TAB per selezionare il frammento di codice evidenziato

Premere TAB per selezionare il frammento di codice evidenziato

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

Premere di nuovo TAB 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

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

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

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