Filtros de acción personalizada de ASP.NET MVC 4

por el equipo de Web Camps

Descarga del kit de formación de Web Camps

ASP.NET MVC proporciona filtros de acción para ejecutar la lógica de filtrado antes o después de llamar a un método de acción. Los filtros de acción son atributos personalizados que proporcionan medios declarativos para agregar el comportamiento previo a la acción y posterior a la acción a los métodos de acción del controlador.

En este laboratorio práctico, creará un atributo de filtro de acción personalizado en la solución MvcMusicStore para detectar las solicitudes del controlador y registrar la actividad de un sitio en una tabla de base de datos. Podrá agregar el filtro de registro mediante inyección a cualquier controlador o acción. Por último, verá la vista de registro que muestra la lista de visitantes.

En este laboratorio práctico se asume que tiene conocimientos básicos de ASP.NET MVC. Si no ha usado ASP.NET MVC antes, le recomendamos que vaya al laboratorio práctico de Aspectos básicos de ASP.NET MVC 4.

Nota:

Todos los fragmentos de código y el código de ejemplo se incluyen en el Kit de entrenamiento de Web Camps, disponible en Microsoft-Web/WebCampTrainingKit Releases. El proyecto específico de este laboratorio está disponible en Filtros de acción personalizada de ASP.NET MVC 4.

Objetivos

En este laboratorio práctico, aprenderá a:

  • Crear un atributo de filtro de acción personalizado para ampliar las funcionalidades de filtrado
  • Aplicar un atributo de filtro personalizado mediante inyección a un nivel específico
  • Registrar filtros de acción personalizados globalmente

Requisitos previos

Debe tener los siguientes elementos para completar este laboratorio:

Configuración

Instalación de fragmentos de código

Para mayor comodidad, gran parte del código que va a administrar a lo largo de este laboratorio está disponible como fragmentos de código de Visual Studio. Para instalar los fragmentos de código, ejecute archivo.\Source\Setup\CodeSnippets.vsi.

Si no está familiarizado con los fragmentos de código de Visual Studio Code y quiere obtener información sobre cómo usarlos, puede consultar el apéndice de este documento "Apéndice C: Usar fragmentos de código".


Ejercicios

Este laboratorio práctico está compuesto por los siguientes ejercicios:

  1. Ejercicio 1: Registro de acciones
  2. Ejercicio 2: Administración de varios filtros de acción

Tiempo estimado para completar este laboratorio: 30 minutos.

Nota:

Cada ejercicio va acompañado de una carpeta final que contiene la solución resultante que debería obtener tras completar los ejercicios. Puede utilizar esta solución como guía si necesita ayuda adicional para realizar los ejercicios.

Ejercicio 1: Registro de acciones

En este ejercicio, aprenderá a crear un filtro de registro de acciones personalizado mediante proveedores de filtros de ASP.NET MVC 4. Para ello, aplicará un filtro de registro al sitio de MusicStore que grabará todas las actividades de los controladores seleccionados.

El filtro extenderá ActionFilterAttributeClass e invalidará el método OnActionExecuting para detectar cada solicitud y, a continuación, realizará las acciones de registro. La información de contexto sobre solicitudes HTTP, ejecutar métodos, resultados y parámetros se proporcionará mediante la clase ActionExecutingContext de ASP.NET MVC.

Nota:

ASP.NET MVC 4 también tiene proveedores de filtros predeterminados que puede usar sin crear un filtro personalizado. ASP.NET MVC 4 proporciona los siguientes tipos de filtros:

  • Filtro de autorización, que toma decisiones de seguridad sobre si se debe ejecutar un método de acción, como realizar la autenticación o validar las propiedades de la solicitud.
  • Filtro de acción, que ajusta la ejecución del método de acción. Este filtro puede llevar a cabo procesos adicionales, como proporcionar datos extra al método de acción, inspeccionar el valor devuelto o cancelar la ejecución del método de acción
  • Filtro de resultados, que ajusta la ejecución del objeto ActionResult. Este filtro puede realizar un procesamiento adicional del resultado, como modificar la respuesta HTTP.
  • Filtro de excepción, que se ejecuta si hay una excepción no controlada iniciada en algún lugar del método de acción, empezando por los filtros de autorización y finalizando con la ejecución del resultado. Los filtros de excepciones se pueden usar para tareas como registrar o mostrar una página de error.

Para obtener más información sobre los proveedores de filtros, visite este vínculo de MSDN: (https://msdn.microsoft.com/library/dd410209.aspx) .

Acerca de la característica de registro de aplicaciones de MVC Music Store

Esta solución Music Store tiene una nueva tabla de modelo de datos para el registro de sitios, ActionLog, con los siguientes campos: Nombre del controlador que recibió una solicitud, Acción llamada, IP de cliente y Marca de tiempo.

Data model. ActionLog table.

Modelo de datos: tabla ActionLog

La solución proporciona una vista ASP.NET MVC para el registro de acciones que se puede encontrar en MvcMusicStores/Views/ActionLog:

Action Log view

Vista registro de acciones

Con esta estructura dada, todo el trabajo se centrará en interrumpir la solicitud del controlador y realizar el registro mediante el filtrado personalizado.

Tarea 1: Crear un filtro personalizado para detectar la solicitud de un controlador

En esta tarea, creará una clase de atributo de filtro personalizada que contendrá la lógica de registro. Para ello, extenderá la clase ActionFilterAttribute de ASP.NET MVC e implementará la interfazIActionFilter.

Nota:

ActionFilterAttribute es la clase base para todos los filtros de atributo. Proporciona los métodos siguientes para ejecutar una lógica específica después y antes de la ejecución de la acción del controlador:

  • OnActionExecuting(ActionExecutingContext filterContext): justo antes de llamar al método de acción.
  • OnActionExecuted(ActionExecutedContext filterContext): después de llamar al método de acción y antes de ejecutar el resultado (antes de ver render).
  • OnResultExecuting(ResultExecutingContext filterContext): justo antes de ejecutar el resultado (antes de ver la representación).
  • OnResultExecuted(ResultExecutedContext filterContext): después de ejecutar el resultado (después de representar la vista).

Al invalidar cualquiera de estos métodos en una clase derivada, puede ejecutar su propio código de filtrado.

  1. Abra la solución Begin ubicada en la carpeta \Source\Ex01-LoggingActions\Begin.

    1. Tendrá que descargar algunos paquetes NuGet que faltan antes de continuar. Para ello, haga clic en el menú Proyecto y seleccione Administrar paquetes NuGet.

    2. En el cuadro de diálogo Administrar paquetes NuGet, haga clic en Restaurar para descargar los paquetes que faltan.

    3. Por último, para compilar la solución, haga clic en Compilar | solución de compilación.

      Nota:

      Una de las ventajas de usar NuGet es que no es necesario enviar todas las bibliotecas del proyecto, lo que reduce el tamaño del proyecto. Con NuGet Power Tools, especificando las versiones del paquete en el archivo Packages.config, podrá descargar todas las bibliotecas necesarias la primera vez que ejecute el proyecto. Por ello, tendrá que ejecutar estos pasos después de abrir una solución existente de este laboratorio.

      Para obtener más información, vea este artículo: https://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages.

  2. Agregue una nueva clase de C# a la carpeta Filters y asígnele el nombre CustomActionFilter.cs. Esta carpeta almacenará todos los filtros personalizados.

  3. Abra CustomActionFilter.cs y agregue una referencia a los espacios de nombres System.Web.Mvc y MvcMusicStore.Models:

    (Fragmento de código: Filtros de acción personalizados de ASP.NET MVC 4: Ej1-CustomActionFilterNamespaces)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using MvcMusicStore.Models;
    
  4. Herede la clase CustomActionFilter de ActionFilterAttribute y, a continuación, haga que la clase CustomActionFilter implemente la interfaz IActionFilter.

    //...
    namespace MvcMusicStore.Filters
    {
        public class CustomActionFilter : ActionFilterAttribute, IActionFilter
        {
            //...
        }
    }
    
  5. Haga que la clase CustomActionFilter invalide el método OnActionExecuting y agregue la lógica necesaria para registrar la ejecución del filtro. Para ello, agregue el código resaltado siguiente en la clase CustomActionFilter.

    (Fragmento de código: Filtros de acción personalizados de ASP.NET MVC 4: Ej1-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:

    El método OnActionExecuting usa Entity Framework para agregar un nuevo registro ActionLog. Crea y rellena una nueva instancia de entidad con la información de contexto de filterContext.

    Puede obtener más información sobre la clase ControllerContext en msdn.

Tarea 2: Insertar un interceptor de código en la clase Store Controller

En esta tarea, agregará el filtro personalizado insertándolo en todas las clases de controlador y las acciones de controlador que se registrarán. Para este ejercicio, la clase Store Controller tendrá un registro.

El método OnActionExecuting del filtro personalizado ActionLogFilterAttribute se ejecuta cuando se llama a un elemento insertado.

También es posible interceptar un método de controlador específico.

  1. Abra StoreController en MvcMusicStore\Controllers y agregue una referencia al espacio de nombres Filtros:

    using System.Linq;
    using System.Web.Mvc;
    using MvcMusicStore.Models;
    using MvcMusicStore.Filters;
    
  2. Inserte el filtro personalizado CustomActionFilter en la clase StoreController agregando el atributo [CustomActionFilter] antes de la declaración de clase.

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

    Nota:

    Cuando se inserta un filtro en una clase de controlador, todas sus acciones también se insertan. Si desea aplicar el filtro solo para un conjunto de acciones, tendrá que insertar [CustomActionFilter] en cada una de ellas:

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

Tarea 3: Ejecución de la aplicación

En esta tarea, probará que el filtro de registro funciona. Iniciará la aplicación y visitará la tienda y, a continuación, comprobará las actividades registradas.

  1. Presione F5 para ejecutar la aplicación.

  2. Vaya a /ActionLog para ver el estado inicial de la vista de registro:

    Screenshot shows the Action Log status before page activity.

    Estado de seguimiento de registros antes de la actividad de la página

    Nota:

    De forma predeterminada, siempre mostrará un elemento que se genera al recuperar los géneros existentes para el menú.

    Para simplificar, estamos limpiando la tabla ActionLog cada vez que se ejecuta la aplicación, por lo que solo mostrará los registros de la comprobación de cada tarea en particular.

    Es posible que tenga que quitar el código siguiente del método Session_Start (en la clase Global.asax ), con el fin de guardar un registro histórico para todas las acciones ejecutadas en el controlador de almacén.

    // Clean up Logs Table
    MusicStoreEntities storeDB = new MusicStoreEntities();
    foreach (var log in 
    
    storeDB.ActionLogs.ToList())
    {
       storeDB.ActionLogs.Remove(log);
    }
    
    storeDB.SaveChanges();
    
  3. Haga clic en uno de los Géneros en el menú y realice algunas acciones allí, como examinar un álbum disponible.

  4. Vaya a /ActionLog y, si el registro está vacío, presione F5 para actualizar la página. Compruebe que se ha realizado un seguimiento de su visita:

    Screenshot shows the Action Log where you can verify your visits.

    Registro de acciones con actividad registrada

Ejercicio 2: Administración de varios filtros de acción

En este ejercicio, agregará un segundo filtro de acción personalizada a la clase StoreController y definirá el orden específico en el que se ejecutarán ambos filtros. A continuación, actualizará el código para registrar el filtro globalmente.

Hay diferentes opciones que se deben tener en cuenta al definir el orden de ejecución de los filtros. Por ejemplo, la propiedad Order y el ámbito de los filtros:

Puede definir un ámbito para cada uno de los filtros, por ejemplo, podría definir todos los filtros de acción que se ejecutarán dentro del ámbito del controlador y todos los filtros de autorización que se ejecutarán en el ámbito global. Los ámbitos tienen un orden de ejecución definido.

Además, cada filtro de acción tiene una propiedad Order que se usa para determinar el orden de ejecución en el ámbito del filtro.

Para obtener más información sobre el orden de ejecución de filtros de acción personalizados, visite este artículo de MSDN: (https://msdn.microsoft.com/library/dd381609(v=vs.98).aspx).

Tarea 1: Crear un nuevo filtro de acción personalizado

En esta tarea, creará un nuevo filtro de acción personalizada para insertarlo en la clase StoreController, aprendiendo a administrar el orden de ejecución de los filtros.

  1. Abra la solución Begin ubicada en la carpeta \Source\Ex02-ManagingMultipleActionFilters\Begin. De lo contrario, puede seguir utilizando la solución Final obtenida al completar el ejercicio anterior.

    1. Si abrió la solución Begin proporcionada, deberá descargar algunos paquetes NuGet que faltan antes de continuar. Para ello, haga clic en el menú Proyecto y seleccione Administrar paquetes NuGet.

    2. En el cuadro de diálogo Administrar paquetes NuGet, haga clic en Restaurar para descargar los paquetes que faltan.

    3. Por último, para compilar la solución, haga clic en Compilar | solución de compilación.

      Nota:

      Una de las ventajas de usar NuGet es que no es necesario enviar todas las bibliotecas del proyecto, lo que reduce el tamaño del proyecto. Con NuGet Power Tools, especificando las versiones del paquete en el archivo Packages.config, podrá descargar todas las bibliotecas necesarias la primera vez que ejecute el proyecto. Por ello, tendrá que ejecutar estos pasos después de abrir una solución existente de este laboratorio.

      Para obtener más información, vea este artículo: https://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages.

  2. Agregue una nueva clase de C# a la carpeta Filters y asígnele el nombre MyNewCustomActionFilter.cs

  3. Abra MyNewCustomActionFilter.cs y agregue una referencia al espacio de nombres System.Web.Mvc y MvcMusicStore.Models:

    (Fragmento de código: Filtros de acción personalizados de ASP.NET MVC 4: Ej2-MyNewCustomActionFilterNamespaces)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using MvcMusicStore.Models;
    
  4. Reemplace la declaración de clase predeterminada por el código siguiente.

    (Fragmento de código: Filtros de acción personalizados de ASP.NET MVC 4: Ej2-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:

    Este filtro de acción personalizada es casi el mismo que el que creó en el ejercicio anterior. La principal diferencia es que tiene el atributo "Registered By" actualizado con el nombre de esta nueva clase para identificar qué filtro registró el registro.

Tarea 2: Insertar un nuevo interceptor de código en la clase StoreController

En esta tarea, agregará un nuevo filtro personalizado a la clase StoreController y ejecutará la solución para comprobar cómo funcionan juntos ambos filtros.

  1. Abra la clase StoreController ubicada en MvcMusicStore\Controllers e inserte el nuevo filtro personalizado MyNewCustomActionFilter en la clase StoreController como se muestra en el código siguiente.

    [MyNewCustomActionFilter]
    [CustomActionFilter]
    public class StoreController : Controller
    {
    ...
    }
    
  2. Ahora, ejecute la aplicación para ver cómo funcionan estos dos filtros de acción personalizados. Para ello, presione F5 y espere hasta que se inicie la aplicación.

  3. Vaya a /ActionLog para ver el estado inicial de la vista de registro.

    Screenshot shows the Action Log tracker status in its initial state.

    Estado de seguimiento de registros antes de la actividad de la página

  4. Haga clic en uno de los Géneros en el menú y realice algunas acciones allí, como examinar un álbum disponible.

  5. Compruebe que esta vez se ha hecho un seguimiento de las visitas dos veces: una vez por cada uno de los filtros de acción personalizados que agregó en la clase StorageController.

    Screenshot shows the Action Log with your visits tracked twice.

    Registro de acciones con actividad registrada

  6. Cierre el explorador.

Tarea 3: Administrar la ordenación de filtros

En esta tarea, aprenderá a administrar el orden de ejecución de los filtros mediante la propiedad Order.

  1. Abra la clase StoreController ubicada en MvcMusicStore\Controllers y especifique la propiedad Order en ambos filtros, como se muestra a continuación.

    [MyNewCustomActionFilter(Order = 2)]
    [CustomActionFilter(Order = 1)]
    public class StoreController : Controller
    {
    ...
    }
    
  2. Ahora, compruebe cómo se ejecutan los filtros en función del valor de su propiedad Order. Encontrará que el filtro con el valor Order más pequeño (CustomActionFilter) es el primero que se ejecuta. Presione F5 y espere hasta que se inicie la aplicación.

  3. Vaya a /ActionLog para ver el estado inicial de la vista de registro.

    Screenshot shows the Action Log before page activity.

    Estado de seguimiento de registros antes de la actividad de la página

  4. Haga clic en uno de los Géneros en el menú y realice algunas acciones allí, como examinar un álbum disponible.

  5. Compruebe que esta vez se ha realizado un seguimiento de las visitas ordenadas por el valor Order de los filtros: los registros CustomActionFilter primero.

    Screenshot shows the Action Log with activity ordered by CustomActionFilter.

    Registro de acciones con actividad registrada

  6. Ahora, actualizará el valor de orden de los filtros y comprobará cómo cambia el orden de registro. En la clase StoreController, actualice el valor Order de filtros como se muestra a continuación.

    [MyNewCustomActionFilter(Order = 1)]
    [CustomActionFilter(Order = 2)]
    public class StoreController : Controller
    {
    ...
    }
    
  7. Vuelva a ejecutar la aplicación presionando F5.

  8. Haga clic en uno de los Géneros en el menú y realice algunas acciones allí, como examinar un álbum disponible.

  9. Compruebe que esta vez, los registros creados por el filtro MyNewCustomActionFilter aparecen primero.

    Screenshot shows the Action Log with logs created by the specified filter first.

    Registro de acciones con actividad registrada

Tarea 4: Registrar filtros globalmente

En esta tarea, actualizará la solución para registrar el nuevo filtro (MyNewCustomActionFilter) como filtro global. Al hacerlo, se desencadenará mediante todas las acciones realizadas en la aplicación y no solo en las de StoreController como en la tarea anterior.

  1. En la clase StoreController, quite el atributo [MyNewCustomActionFilter] y la propiedad Order de [CustomActionFilter]. Debería tener este aspecto:

    [CustomActionFilter]
    public class StoreController : Controller
    {
    ...
    }
    
  2. Abra el archivo Global.asax y busque el método Application_Start. Tenga en cuenta que cada vez que la aplicación se inicia, registra los filtros globales mediante una llamada al método RegisterGlobalFilters dentro de la clase FilterConfig.

    Registering Global Filters in Global.asax

    Registro de filtros globales en Global.asax

  3. Abra el archivo FilterConfig.cs en la carpeta App_Start.

  4. Agregue una referencia al uso de System.Web.Mvc; utilizando el espacio de nombres MvcMusicStore.Filters.

    using System.Web.Mvc;
    using MvcMusicStore.Filters;
    
  5. Actualice el método RegisterGlobalFilters agregando el filtro personalizado. Para ello, agregue el código resaltado:

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
        filters.Add(new MyNewCustomActionFilter());
    }
    
  6. Ejecute la aplicación presionando F5.

  7. Haga clic en uno de los Géneros en el menú y realice algunas acciones allí, como examinar un álbum disponible.

  8. Compruebe que ahora [MyNewCustomActionFilter] se está insertando también en HomeController y ActionLogController.

    Screenshot shows the Action Log where you can check your new custom filter.

    Registro de acciones con actividad global registrada

Nota:

Además, puede implementar esta aplicación en sitios web de Windows Azure si sigue Apéndice B: Publicación de una aplicación ASP.NET MVC 4 mediante Web Deploy.


Resumen

Al completar este laboratorio práctico, ha aprendido a ampliar un filtro de acción para ejecutar acciones personalizadas. También ha aprendido a insertar cualquier filtro en los controladores de página. Se usaron los conceptos siguientes:

  • Cómo crear filtros de acción personalizada con la clase ActionFilterAttribute de ASP.NET MVC
  • Cómo insertar filtros en controladores ASP.NET MVC
  • Cómo administrar la ordenación de filtros mediante la propiedad Order
  • Cómo registrar globalmente filtros

Apéndice A: Instalación de Visual Studio Express 2012 para Web

Puede instalar Microsoft Visual Studio Express 2012 para Web u otra versión "Express" mediante el Instalador de plataforma web de Microsoft . Las instrucciones siguientes le guían por los pasos necesarios para instalar Visual Studio Express 2012 para Web mediante Instalador de plataforma web de Microsoft.

  1. Ir a https://go.microsoft.com/?linkid=9810169. Como alternativa, si ya ha instalado el Instalador de plataforma web, puede abrirlo y buscar el producto "Visual Studio Express 2012 para Web con el SDK de Windows Azure".

  2. Haga clic en Instalar ahora. Si no tiene Instalador de plataforma web se le redirigirá para descargarlo e instalarlo primero.

  3. Una vez que Instalador de plataforma web está abierto, haga clic en Instalar para iniciar la instalación.

    Install Visual Studio Express

    Instalar Visual Studio Express

  4. Lea todas las licencias y términos de los productos y haga clic en Acepto para continuar.

    Accepting the license terms

    Aceptar los términos de licencia

  5. Espere hasta que finalice el proceso de descarga e instalación.

    Installation progress

    Progreso de la instalación

  6. Cuando finalice la instalación, haga clic en Finalizar.

    Installation completed

    Instalación completada

  7. Haga clic en Salir para cerrar el Instalador de plataforma web.

  8. Para abrir Visual Studio Express para Web, vaya a la pantalla Inicio y escriba "VS Express ", luego haga clic en el icono VS Express para Web.

    VS Express for Web tile

    Icono de VS Express para Web

Apéndice B: Publicación de una aplicación de ASP.NET MVC 4 mediante Web Deploy

En este apéndice se muestra cómo crear un sitio web desde el portal de administración de Windows Azure y publicar la aplicación que ha obtenido al seguir el laboratorio, y aprovechar la característica de publicación Web Deploy proporcionada por Windows Azure.

Tarea 1: Creación de un sitio web desde el portal de Windows Azure

  1. Vaya al Portal de administración de Windows Azure e inicie sesión con las credenciales de Microsoft asociadas a la suscripción.

    Nota:

    Con Windows Azure puede hospedar 10 sitios web de ASP.NET de forma gratuita y, después, escalar a medida que crezca el tráfico. Puede registrarse aquí.

    Log on to Windows Azure portal

    Inicio de sesión en el Portal de administración de Windows Azure

  2. Haga clic en Nuevo en la barra de comandos.

    Creating a new Web Site

    Crear un nuevo sitio web

  3. Haga clic en Proceso | Sitio web. A continuación, seleccione opción Creación rápida. Proporcione una dirección URL disponible para el nuevo sitio web y haga clic en Crear sitio web.

    Nota:

    Un sitio web de Windows Azure es el host para una aplicación web que se ejecuta en la nube que puede controlar y administrar. La opción Creación rápida permite implementar una aplicación web completada en el sitio web de Windows Azure desde fuera del portal. No incluye pasos para configurar una base de datos.

    Creating a new Web Site using Quick Create

    Crear un nuevo sitio web mediante la Creación rápida

  4. Espere hasta que se cree el nuevo Sitio web.

  5. Una vez creado el sitio web, haga clic en el vínculo de la columna URL. Compruebe que el nuevo sitio web funciona.

    Browsing to the new web site

    Exploración a la nueva aplicación web

    Web site running

    Sitio web que ejecuta

  6. Vuelva al portal y haga clic en el nombre del sitio web bajo la columna Nombre para mostrar las páginas de administración.

    Opening the web site management pages

    Abrir las páginas de administración del sitio web

  7. En la página Panel, en la sección de vista rápida, haga clic en el vínculo Descargar perfil de publicación.

    Nota:

    El perfil de publicación contiene toda la información necesaria para publicar una aplicación web en un sitio web de Windows Azure para cada método de publicación habilitado. El perfil de publicación contiene las URL, las credenciales de usuario y las cadenas de base de datos necesarias para conectarse y autenticarse en cada uno de los puntos de conexión para los que se ha habilitado un método de publicación. Microsoft WebMatrix 2, Microsoft Visual Studio Express para Web y Microsoft Visual Studio 2012 admiten la lectura de perfiles de publicación para automatizar la configuración de estos programas para publicar aplicaciones web en sitios web de Windows Azure.

    Downloading the web site publish profile

    Descargar el perfil de publicación del sitio web

  8. Descargue el archivo de perfil de publicación en una ubicación conocida. Más adelante en este ejercicio verá cómo usar este archivo para publicar una aplicación web en un sitio web de Windows Azure desde Visual Studio.

    Saving the publish profile file

    Guardar el archivo de perfil de publicación

Tarea 2: configuración del servidor de bases de datos

Si la aplicación usa bases de datos de SQL Server, deberá crear un servidor de la Bases de datos SQL. Si desea implementar una aplicación sencilla que no use SQL Server, puede omitir esta tarea.

  1. Necesitará un servidor de Bases de datos SQL para almacenar la base de datos de la aplicación. Puede ver los servidores de SQL Database desde la suscripción en el Portal de administración de Windows Azure en Sql Databases | Servers | Server's Dashboard. Si no tiene un servidor creado, puede crear uno mediante el botón Agregar de la barra de comandos. Tome nota del nombre y la dirección URL del servidor , el nombre de inicio de sesión de administrador y la contraseña, ya que los usará en las tareas siguientes. Aún no cree la base de datos, ya que se creará en una fase posterior.

    SQL Database Server Dashboard

    Panel de Servidor de Bases de datos SQL

  2. En la siguiente tarea probará la conexión a la base de datos desde Visual Studio, para ello deberá incluir su dirección IP local en la lista de Direcciones IP permitidas del servidor. Para ello, haga clic en Configurar, seleccione la dirección IP de dirección IP del cliente actual y péguela en el Dirección IP de inicio y los cuadros de texto Dirección IP final y haga clic en el botón add-client-ip-address-ok-button.

    Adding Client IP Address

    Adición de la dirección IP del cliente

  3. Una vez agregada la Dirección IP del cliente a la lista de direcciones IP permitidas, haga clic en Guardar para confirmar los cambios.

    Confirm Changes

    Confirmar cambios

Tarea 3: publicación de una aplicación de ASP.NET MVC 4 mediante Web Deploy

  1. Vuelva a la solución ASP.NET MVC 4. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto de sitio web y seleccione Publicar.

    Publishing the Application

    Publicación del sitio web

  2. Importe el perfil de publicación que guardó en la primera tarea.

    Importing the publish profile

    Importación del perfil de publicación

  3. Haga clic en Validar conexión. Una vez completada la validación, haga clic en Siguiente.

    Nota:

    La validación se habrá completado cuando aparezca una marca de verificación verde junto al botón Validar conexión.

    Validating connection

    Validar conexión

  4. En la página Configuración, en la sección Bases de datos, haga clic en el botón situado junto al cuadro de texto de la conexión de base de datos (es decir, DefaultConnection).

    Web deploy configuration

    Configuración de Web Deploy

  5. Configure la conexión de base de datos de la siguiente manera:

    • En Nombre del servidor, escriba la dirección URL del servidor SQL Database con el prefijo tcp:.

    • En Nombre de usuario escriba su nombre de usuario de administrador del servidor.

    • En Contraseña escriba la contraseña de inicio de sesión del administrador del servidor.

    • Escriba un nuevo nombre de base de datos.

      Configuring destination connection string

      Configuración de la cadena de conexión de destino

  6. A continuación, haga clic en Aceptar. Cuando se le pida que cree la base de datos, haga clic en .

    Creating the database

    Creación de la base de datos

  7. La cadena de conexión que utilizará para conectarse a la Base de datos SQL en Windows Azure se muestra en el cuadro de texto Conexión predeterminada. A continuación, haga clic en Siguiente.

    Connection string pointing to SQL Database

    Cadena de conexión que apunta a la Base de datos SQL

  8. En la página Versión preliminar, haga clic en Publicar.

    Publishing the web application

    Publicación de la aplicación web

  9. Una vez finalizado el proceso de publicación, el explorador predeterminado abrirá el sitio web publicado.

Apéndice C: Uso de fragmentos de código

Con fragmentos de código, tiene todo el código que necesita a su alcance. El documento de laboratorio le indicará exactamente cuándo puede utilizarlos, como se muestra en la siguiente figura.

Using Visual Studio code snippets to insert code into your project

Usar fragmentos de código de Visual Studio para insertar código en el proyecto

Para agregar un fragmento de código mediante el teclado (solo C#)

  1. Coloque el cursor donde desea insertar el código.
  2. Empiece a escribir el nombre del fragmento de código (sin espacios o guiones).
  3. Vea como IntelliSense muestra los nombres de los fragmentos de código coincidentes.
  4. Seleccione el fragmento de código correcto (o siga escribiendo hasta seleccionar todo el nombre del fragmento).
  5. Presione la tecla Tab dos veces para insertar el fragmento de código en la ubicación del cursor.

Start typing the snippet name

Empezar a escribir el nombre del fragmento de código

Press Tab to select the highlighted snippet

Presione la tecla Tab para seleccionar el fragmento de código resaltado

Press Tab again and the snippet will expand

Presione la pestaña de nuevo y el fragmento de código se expandirá

Para agregar un fragmento de código mediante el mouse (C#, Visual Basic y XML) 1. Haga clic con el botón derecho en el lugar donde desea insertar el fragmento de código.

  1. Seleccione Insertar fragmento de código seguido de Mis fragmentos de código.
  2. Seleccione el fragmento de código correspondiente de la lista haciendo clic en él.

Right-click where you want to insert the code snippet and select Insert Snippet

Haga clic con el botón derecho en el lugar donde desea insertar el fragmento de código y seleccione Insertar fragmento de código

Pick the relevant snippet from the list, by clicking on it

Seleccionar el fragmento de código correspondiente de la lista, haciendo clic en él