Filtros de ação personalizada do ASP.NET MVC 4
Por Equipe Web Camps
Baixe o kit de treinamento Web Camps
ASP.NET MVC fornece filtros de ação para executar a lógica de filtragem antes ou depois de um método de ação ser chamado. Os filtros de ação são atributos personalizados que fornecem meios declarativos para adicionar comportamento de pré-ação e pós-ação aos métodos de ação do controlador.
Neste Laboratório Prático, você criará um atributo de filtro de ação personalizado na solução MvcMusicStore para capturar as solicitações do controlador e registrar a atividade de um site em uma tabela de banco de dados. Você poderá adicionar seu filtro de registro por injeção a qualquer controlador ou ação. Por fim, você verá a visualização de log que mostra a lista de visitantes.
Este laboratório prático pressupõe que você tenha conhecimento básico de ASP.NET MVC. Se você nunca usou ASP.NET MVC antes, recomendamos que você leia ASP.NET Laboratório Prático de Fundamentos do MVC 4.
Observação
Todo o código de exemplo e snippets estão incluídos no Kit de Treinamento de Web Camps, disponível em Versões Microsoft-Web/WebCampTrainingKit. O projeto específico para este laboratório está disponível em ASP.NET Filtros de Ação Personalizada do MVC 4.
Objetivos
Neste Laboratório Prático, você aprenderá a:
- Criar um atributo de filtro de ação personalizado para estender os recursos de filtragem
- Aplicar um atributo de filtro personalizado por injeção a um nível específico
- Registrar uma ação personalizada filtra globalmente
Pré-requisitos
Você deve ter os seguintes itens para concluir este laboratório:
- Microsoft Visual Studio Express 2012 para Web ou superior (leia o Apêndice A para obter instruções sobre como instalá-lo).
Instalação
Instalando trechos de código
Por conveniência, grande parte do código que você gerenciará ao longo deste laboratório está disponível como trechos de código do Visual Studio. Para instalar os snippets de código, execute o arquivo .\Source\Setup\CodeSnippets.vsi .
Se você não estiver familiarizado com os Snippets de Código do Visual Studio e quiser aprender a usá-los, consulte o apêndice deste documento "Apêndice C: Usando Snippets de Código".
Exercícios
Este Laboratório Prático é composto pelos seguintes exercícios:
Tempo estimado para concluir este laboratório: 30 minutos.
Observação
Cada exercício é acompanhado por uma pasta End contendo a solução resultante que você deve obter após concluir os exercícios. Você pode usar esta solução como um guia se precisar de ajuda adicional para trabalhar nos exercícios.
Exercício 1: Ações de registro
Neste exercício, você aprenderá a criar um filtro de log de ação personalizado usando ASP.NET Provedores de Filtro MVC 4. Para isso, você aplicará um filtro de registro no site da MusicStore que registrará todas as atividades nos controladores selecionados.
O filtro estenderá ActionFilterAttributeClass e substituirá o método OnActionExecuting para capturar cada solicitação e, em seguida, executar as ações de log. As informações de contexto sobre solicitações HTTP, métodos de execução, resultados e parâmetros serão fornecidas por ASP.NET classe MVC ActionExecutingContext .
Observação
ASP.NET MVC 4 também tem provedores de filtros padrão que você pode usar sem criar um filtro personalizado. ASP.NET MVC 4 fornece os seguintes tipos de filtros:
- Filtro de autorização , que toma decisões de segurança sobre a execução de um método de ação, como executar a autenticação ou validar as propriedades da solicitação.
- Filtro de ação , que encapsula a execução do método de ação. Esse filtro pode executar processamento adicional, como fornecer dados extras para o método de ação, inspecionar o valor retornado ou cancelar a execução do método de ação
- Filtro de resultado , que encapsula a execução do objeto ActionResult. Esse filtro pode executar processamento adicional do resultado, como modificar a resposta HTTP.
- Filtro de exceção , que é executado se houver uma exceção não tratada lançada em algum lugar no método de ação, começando com os filtros de autorização e terminando com a execução do resultado. Os filtros de exceção podem ser usados para tarefas como registro em log ou exibição de uma página de erro.
Para obter mais informações sobre provedores de filtros, visite este link do MSDN: (https://msdn.microsoft.com/library/dd410209.aspx) .
Sobre o recurso de registro do aplicativo MVC Music Store
Esta solução Music Store possui uma nova tabela de modelo de dados para log do site, ActionLog, com os seguintes campos: Nome do controlador que recebeu uma solicitação, Ação chamada, IP do cliente e Carimbo de data/hora.
Modelo de dados - tabela ActionLog
A solução fornece uma ASP.NET exibição MVC para o log de ações que pode ser encontrado em MvcMusicStores/Views/ActionLog:
Exibição do log de ações
Com essa estrutura fornecida, todo o trabalho será focado em interromper a solicitação do controlador e executar o log usando filtragem personalizada.
Tarefa 1 – Criando um filtro personalizado para capturar a solicitação de um controlador
Nesta tarefa, você criará uma classe de atributo de filtro personalizada que conterá a lógica de log. Para essa finalidade, você estenderá ASP.NET classe ActionFilterAttribute do MVC e implementará a interface IActionFilter.
Observação
O ActionFilterAttribute é a classe base para todos os filtros de atributo. Ele fornece os seguintes métodos para executar uma lógica específica antes e depois da execução da ação do controlador:
- OnActionExecuting(ActionExecutingContext filterContext): pouco antes de o método de ação ser chamado.
- OnActionExecuted(ActionExecutedContext filterContext): depois que o método de ação é chamado e antes que o resultado seja executado (antes da renderização da exibição).
- OnResultExecuting(ResultExecutingContext filterContext): pouco antes de o resultado ser executado (antes da renderização do modo de exibição).
- OnResultExecuted(ResultExecutedContext filterContext): depois que o resultado é executado (depois que a exibição é renderizada).
Ao substituir qualquer um desses métodos em uma classe derivada, você pode executar seu próprio código de filtragem.
Abra a solução Begin localizada na pasta \Source\Ex01-LoggingActions\Begin .
Você precisará baixar alguns pacotes NuGet ausentes antes de continuar. Para fazer isso, clique no menu Projeto e selecione Gerenciar Pacotes NuGet.
Na caixa de diálogo Gerenciar Pacotes NuGet, clique em Restaurar para baixar pacotes ausentes.
Por fim, crie a solução clicando em Compilar | Compilar Solução.
Observação
Uma das vantagens de usar o NuGet é que você não precisa enviar todas as bibliotecas em seu projeto, reduzindo o tamanho do projeto. Com o NuGet Power Tools, especificando as versões do pacote no arquivo Packages.config, você poderá baixar todas as bibliotecas necessárias na primeira vez que executar o projeto. É por isso que você terá que executar essas etapas depois de abrir uma solução existente neste laboratório.
Para obter mais informações, consulte este artigo: https://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages.
Adicione uma nova classe C# à pasta Filtros e nomeie-a CustomActionFilter.cs. Esta pasta armazenará todos os filtros personalizados.
Abra CustomActionFilter.cs e adicione uma referência aos namespaces System.Web.Mvc e MvcMusicStore.Models :
(Snippet de código – ASP.NET filtros de ação personalizados do MVC 4 – Ex1-CustomActionFilterNamespaces)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using MvcMusicStore.Models;
Herde a classe CustomActionFilter de ActionFilterAttribute e, em seguida, faça com que a classe CustomActionFilter implemente a interface IActionFilter.
//... namespace MvcMusicStore.Filters { public class CustomActionFilter : ActionFilterAttribute, IActionFilter { //... } }
Faça com que a classe CustomActionFilter substitua o método OnActionExecuting e adicione a lógica necessária para registrar a execução do filtro. Para fazer isso, adicione o código realçado a seguir na classe CustomActionFilter .
(Snippet de código – ASP.NET filtros de ação personalizados do 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); } } }
Observação
OnActionExecuting está usando o Entity Framework para adicionar um novo registro ActionLog. Ele cria e preenche uma nova instância de entidade com as informações de contexto de filterContext.
Você pode ler mais sobre a classe ControllerContext no msdn.
Tarefa 2 – Injetando um interceptor de código na classe do controlador de armazenamento
Nesta tarefa, você adicionará o filtro personalizado injetando-o em todas as classes de controlador e ações do controlador que serão registradas. Para a finalidade deste exercício, a classe Store Controller terá um log.
O método OnActionExecuting do filtro personalizado ActionLogFilterAttribute é executado quando um elemento injetado é chamado.
Também é possível interceptar um método de controlador específico.
Abra o StoreController em MvcMusicStore\Controllers e adicione uma referência ao namespace Filters :
using System.Linq; using System.Web.Mvc; using MvcMusicStore.Models; using MvcMusicStore.Filters;
Injete o filtro personalizado CustomActionFilter na classe StoreController adicionando o atributo [CustomActionFilter] antes da declaração de classe.
... [CustomActionFilter] public class StoreController : Controller { ... }
Observação
Quando um filtro é injetado em uma classe de controlador, todas as suas ações também são injetadas. Se você quiser aplicar o filtro apenas para um conjunto de ações, terá que injetar [CustomActionFilter] em cada uma delas:
[CustomActionFilter] public ActionResult Index() { ... } [CustomActionFilter] public ActionResult Browse(string genre) { ... }
Tarefa 3 – Executando o aplicativo
Nesta tarefa, você testará se o filtro de log está funcionando. Você iniciará o aplicativo e visitará a loja e, em seguida, verificará as atividades registradas.
Pressione F5 para executar o aplicativo.
Navegue até /ActionLog para ver o estado inicial da exibição de log:
Status do rastreador de log antes da atividade da página
Observação
Por padrão, ele sempre mostrará um item gerado ao recuperar os gêneros existentes para o menu.
Para simplificar, estamos limpando a tabela ActionLog sempre que o aplicativo é executado, para que ela mostre apenas os logs da verificação de cada tarefa específica.
Talvez seja necessário remover o código a seguir do método Session_Start (na classe Global.asax ), para salvar um log histórico para todas as ações executadas no Controlador de Armazenamento.
// Clean up Logs Table MusicStoreEntities storeDB = new MusicStoreEntities(); foreach (var log in storeDB.ActionLogs.ToList()) { storeDB.ActionLogs.Remove(log); } storeDB.SaveChanges();
Clique em um dos Gêneros no menu e execute algumas ações lá, como navegar em um álbum disponível.
Navegue até /ActionLog e, se o log estiver vazio, pressione F5 para atualizar a página. Verifique se suas visitas foram rastreadas:
Log de ações com atividade registrada
Exercício 2: Gerenciando vários filtros de ação
Neste exercício, você adicionará um segundo Filtro de Ação Personalizada à classe StoreController e definirá a ordem específica na qual ambos os filtros serão executados. Em seguida, você atualizará o código para registrar o filtro globalmente.
Existem diferentes opções a serem levadas em consideração ao definir a ordem de execução dos Filtros. Por exemplo, a propriedade Order e o escopo dos Filtros:
Você pode definir um Escopo para cada um dos Filtros, por exemplo, você pode definir o escopo de todos os Filtros de Ação para serem executados dentro do Escopo do Controlador e todos os Filtros de Autorização para serem executados no escopo Global. Os escopos têm uma ordem de execução definida.
Além disso, cada filtro de ação tem uma propriedade Order que é usada para determinar a ordem de execução no escopo do filtro.
Para obter mais informações sobre a ordem de execução dos Filtros de Ação Personalizados, visite este artigo do MSDN: (https://msdn.microsoft.com/library/dd381609(v=vs.98).aspx).
Tarefa 1: Criando um novo filtro de ação personalizada
Nesta tarefa, você criará um novo Filtro de Ação Personalizada para injetar na classe StoreController, aprendendo a gerenciar a ordem de execução dos filtros.
Abra a solução Begin localizada na pasta \Source\Ex02-ManagingMultipleActionFilters\Begin . Caso contrário, você pode continuar usando a solução final obtida concluindo o exercício anterior.
Se você abriu a solução Begin fornecida, precisará baixar alguns pacotes NuGet ausentes antes de continuar. Para fazer isso, clique no menu Projeto e selecione Gerenciar Pacotes NuGet.
Na caixa de diálogo Gerenciar Pacotes NuGet, clique em Restaurar para baixar pacotes ausentes.
Por fim, crie a solução clicando em Compilar | Compilar Solução.
Observação
Uma das vantagens de usar o NuGet é que você não precisa enviar todas as bibliotecas em seu projeto, reduzindo o tamanho do projeto. Com o NuGet Power Tools, especificando as versões do pacote no arquivo Packages.config, você poderá baixar todas as bibliotecas necessárias na primeira vez que executar o projeto. É por isso que você terá que executar essas etapas depois de abrir uma solução existente neste laboratório.
Para obter mais informações, consulte este artigo: https://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages.
Adicione uma nova classe C# à pasta Filtros e nomeie-a MyNewCustomActionFilter.cs
Abra MyNewCustomActionFilter.cs e adicione uma referência a System.Web.Mvc e ao namespace MvcMusicStore.Models :
(Snippet de código – ASP.NET filtros de ação personalizados do MVC 4 – Ex2-MyNewCustomActionFilterNamespaces)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using MvcMusicStore.Models;
Substitua a declaração de classe padrão pelo código a seguir.
(Snippet de código – ASP.NET filtros de ação personalizados 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); } }
Observação
Esse Filtro de Ação Personalizado é quase o mesmo que o que você criou no exercício anterior. A principal diferença é que ele tem o atributo "Logged By" atualizado com o nome dessa nova classe para identificar qual filtro registrou o log.
Tarefa 2: Injetando um novo Code Interceptor na classe StoreController
Nesta tarefa, você adicionará um novo filtro personalizado à classe StoreController e executará a solução para verificar como os dois filtros funcionam juntos.
Abra a classe StoreController localizada em MvcMusicStore\Controllers e injete o novo filtro personalizado MyNewCustomActionFilter na classe StoreController , como é mostrado no código a seguir.
[MyNewCustomActionFilter] [CustomActionFilter] public class StoreController : Controller { ... }
Agora, execute o aplicativo para ver como esses dois filtros de ação personalizados funcionam. Para fazer isso, pressione F5 e aguarde até que o aplicativo seja iniciado.
Navegue até /ActionLog para ver o estado inicial da exibição de log.
Status do rastreador de log antes da atividade da página
Clique em um dos Gêneros no menu e execute algumas ações lá, como navegar em um álbum disponível.
Verifique isso desta vez; suas visitas foram rastreadas duas vezes: uma para cada um dos Filtros de Ação Personalizados que você adicionou na classe StorageController .
Log de ações com atividade registrada
Feche o navegador.
Tarefa 3: Gerenciando a ordenação de filtros
Nesta tarefa, você aprenderá a gerenciar a ordem de execução dos filtros usando a propriedade Order.
Abra a classe StoreController localizada em MvcMusicStore\Controllers e especifique a propriedade Order em ambos os filtros, conforme mostrado abaixo.
[MyNewCustomActionFilter(Order = 2)] [CustomActionFilter(Order = 1)] public class StoreController : Controller { ... }
Agora, verifique como os filtros são executados dependendo do valor da propriedade Order. Você descobrirá que o filtro com o menor valor de Order (CustomActionFilter) é o primeiro a ser executado. Pressione F5 e aguarde até que o aplicativo seja iniciado.
Navegue até /ActionLog para ver o estado inicial da exibição de log.
Status do rastreador de log antes da atividade da página
Clique em um dos Gêneros no menu e execute algumas ações lá, como navegar em um álbum disponível.
Verifique se, desta vez, suas visitas foram rastreadas ordenadas pelo valor Order dos filtros: CustomActionFilter registra primeiro.
Log de ações com atividade registrada
Agora, você atualizará o valor do pedido dos Filtros e verificará como a ordem de registro muda. Na classe StoreController, atualize o valor Order dos filtros, conforme mostrado abaixo.
[MyNewCustomActionFilter(Order = 1)] [CustomActionFilter(Order = 2)] public class StoreController : Controller { ... }
Execute o aplicativo novamente pressionando F5.
Clique em um dos Gêneros no menu e execute algumas ações lá, como navegar em um álbum disponível.
Verifique se, desta vez, os logs criados pelo filtro MyNewCustomActionFilter aparecem primeiro.
Log de ações com atividade registrada
Tarefa 4: Registrando filtros globalmente
Nesta tarefa, você atualizará a solução para registrar o novo filtro (MyNewCustomActionFilter) como um filtro global. Ao fazer isso, ele será acionado por todas as ações executadas no aplicativo e não apenas nas StoreController como na tarefa anterior.
Na classe StoreController , remova o atributo [MyNewCustomActionFilter] e a propriedade order de [CustomActionFilter]. Ela será semelhante ao seguinte:
[CustomActionFilter] public class StoreController : Controller { ... }
Abra o arquivo Global.asax e localize o método Application_Start . Observe que cada vez que o aplicativo é iniciado, ele está registrando os filtros globais chamando o método RegisterGlobalFilters dentro da classe FilterConfig .
Registrando filtros globais em Global.asax
Abra FilterConfig.cs arquivo dentro App_Start pasta.
Adicione uma referência ao uso de System.Web.Mvc; usando MvcMusicStore.Filters; Namespace.
using System.Web.Mvc; using MvcMusicStore.Filters;
Atualize o método RegisterGlobalFilters adicionando seu filtro personalizado. Para fazer isso, adicione o código destacado:
public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); filters.Add(new MyNewCustomActionFilter()); }
Execute o aplicativo pressionando F5.
Clique em um dos Gêneros no menu e execute algumas ações lá, como navegar em um álbum disponível.
Verifique se agora [MyNewCustomActionFilter] está sendo injetado no HomeController e no ActionLogController também.
Log de ação com atividade global registrada
Observação
Além disso, você pode implantar esse aplicativo em sites do Windows Azure seguindo o Apêndice B: Publicando um aplicativo MVC 4 do ASP.NET usando a Implantação da Web.
Resumo
Ao concluir este laboratório prático, você aprendeu a estender um filtro de ação para executar ações personalizadas. Você também aprendeu a injetar qualquer filtro em seus controladores de página. Foram utilizados os seguintes conceitos:
- Como criar filtros de ação personalizada com a classe ActionFilterAttribute do MVC ASP.NET
- Como injetar filtros em controladores MVC ASP.NET
- Como gerenciar a ordenação de filtros usando a propriedade Order
- Como registrar filtros globalmente
Apêndice A: Instalando o Visual Studio Express 2012 para Web
Você pode instalar o Microsoft Visual Studio Express 2012 para Web ou outra versão "Express" usando o Microsoft Web Platform Installer. As instruções a seguir orientam você pelas etapas necessárias para instalar o Visual Studio Express 2012 para Web usando o Microsoft Web Platform Installer.
Vá para /iis/extensions/introduction-to-iis-express/iis-express-overview?linkid=9810169. Como alternativa, se você já instalou o Web Platform Installer, poderá abri-lo e pesquisar o produto "Visual Studio Express 2012 for Web with Windows Azure SDK".
Clique em Instalar agora. Se você não tiver o Web Platform Installer , será redirecionado para baixá-lo e instalá-lo primeiro.
Quando o Web Platform Installer estiver aberto, clique em Instalar para iniciar a configuração.
Instalar o Visual Studio Express
Leia todas as licenças e termos dos produtos e clique em Aceito para continuar.
Aceitando os termos da licença
Aguarde até que o processo de download e instalação seja concluído.
Progresso da instalação
Quando a instalação for concluída, clique em Concluir.
Instalação concluída
Clique em Sair para fechar o Web Platform Installer.
Para abrir o Visual Studio Express para Web, vá para a tela Iniciar e comece a escrever "VS Express" e clique no bloco VS Express para Web .
Bloco do VS Express para Web
Apêndice B: Publicando um aplicativo MVC 4 do ASP.NET usando a Implantação da Web
Este apêndice mostrará como criar um novo site no Portal de Gerenciamento do Windows Azure e publicar o aplicativo obtido seguindo o laboratório, aproveitando o recurso de publicação de Implantação da Web fornecido pelo Windows Azure.
Tarefa 1 – Criando um novo site a partir do Portal do Windows Azure
Vá para o Portal de Gerenciamento do Windows Azure e entre usando as credenciais da Microsoft associadas à sua assinatura.
Observação
Com o Windows Azure, você pode hospedar 10 ASP.NET sites gratuitamente e, em seguida, dimensionar à medida que o tráfego cresce. Você pode se inscrever aqui.
Faça logon no Portal de Gerenciamento do Windows Azure
Clique em Novo na barra de comandos.
Criando um novo site
Clique em Site de Computação | . Em seguida, selecione a opção Criação rápida. Forneça uma URL disponível para o novo site e clique em Criar Site.
Observação
Um site do Windows Azure é o host de um aplicativo Web em execução na nuvem que você pode controlar e gerenciar. A opção Criação Rápida permite implantar um aplicativo Web concluído no site do Windows Azure de fora do portal. Ele não inclui etapas para configurar um banco de dados.
Criando um novo site usando a Criação rápida
Aguarde até que o novo site seja criado.
Depois que o site for criado, clique no link na coluna URL . Verifique se o novo site está funcionando.
Navegando para o novo site
Site em execução
Volte para o portal e clique no nome do site na coluna Nome para exibir as páginas de gerenciamento.
Abrindo as páginas de gerenciamento do site
Na página Painel, na seção de visão rápida, clique no link Baixar perfil de publicação.
Observação
O perfil de publicação contém todas as informações necessárias para publicar um aplicativo Web em um site do Windows Azure para cada método de publicação habilitado. O perfil de publicação contém as URLs, as credenciais de usuário e as cadeias de caracteres de banco de dados necessárias para se conectar e autenticar em cada um dos pontos de extremidade para os quais um método de publicação está habilitado. O Microsoft WebMatrix 2, o Microsoft Visual Studio Express for Web e o Microsoft Visual Studio 2012 oferecem suporte à leitura de perfis de publicação para automatizar a configuração desses programas para publicar aplicativos Web em sites do Windows Azure.
Baixando o perfil de publicação do site
Baixe o arquivo de perfil de publicação em um local conhecido. Mais adiante neste exercício, você verá como usar esse arquivo para publicar um aplicativo Web em sites do Windows Azure a partir do Visual Studio.
Salvando o arquivo de perfil de publicação
Tarefa 2 – Configurando o servidor de banco de dados
Se o seu aplicativo usar bancos de dados do SQL Server, você precisará criar um servidor do Banco de Dados SQL. Se você quiser implantar um aplicativo simples que não usa o SQL Server, ignore essa tarefa.
Você precisará de um servidor de Banco de Dados SQL para armazenar o banco de dados do aplicativo. Você pode exibir os servidores do Banco de dados SQL de sua assinatura no portal de gerenciamento do Windows Azure no Painel do servidor de servidores dos bancos de dados | | SQL. Se você não tiver um servidor criado, poderá criar um usando o botão Adicionar na barra de comandos. Anote o nome e a URL do servidor, o nome de login e a senha do administrador, pois você os usará nas próximas tarefas. Não crie o banco de dados ainda, pois ele será criado em um estágio posterior.
Painel do Servidor do Banco de Dados SQL
Na próxima tarefa, você testará a conexão do banco de dados do Visual Studio, por esse motivo, você precisa incluir seu endereço IP local na lista de endereços IP permitidos do servidor. Para fazer isso, clique em Configurar, selecione o endereço IP do endereço IP do cliente atual e cole-o nas caixas de texto Endereço IP inicial e Endereço IP final e clique no botão.
Adicionando o endereço IP do cliente
Depois que o endereço IP do cliente for adicionado à lista de endereços IP permitidos, clique em Salvar para confirmar as alterações.
Confirmar alterações
Tarefa 3 – Publicando um aplicativo MVC 4 ASP.NET usando a Implantação da Web
Volte para a solução MVC 4 ASP.NET. No Gerenciador de Soluções, clique com o botão direito do mouse no projeto de site e selecione Publicar.
Publicando o site
Importe o perfil de publicação que você salvou na primeira tarefa.
Importando o perfil de publicação
Clique em Validar conexão. Quando a validação estiver concluída, clique em Avançar.
Observação
A validação é concluída quando você vê uma marca de seleção verde ao lado do botão Validar conexão.
Validando conexão
Na página Configurações, na seção Bancos de dados, clique no botão ao lado da caixa de texto da conexão com o banco de dados (ou seja, DefaultConnection).
Configuração de implantação da Web
Configure a conexão do banco de dados da seguinte maneira:
No Nome do servidor, digite a URL do servidor do Banco de Dados SQL usando o prefixo tcp:.
Em Nome de usuário, digite o nome de logon do administrador do servidor.
Em Senha , digite sua senha de login de administrador do servidor.
Digite um novo nome de banco de dados.
Configurando a cadeia de conexão de destino
Em seguida, clique em OK. Quando solicitado a criar o banco de dados, clique em Sim.
Criando o banco de dados
A cadeia de conexão que você usará para se conectar ao Banco de dados SQL no Windows Azure é mostrada na caixa de texto Conexão Padrão. Em seguida, clique em Próximo.
Cadeia de conexão apontando para o Banco de Dados SQL
Na página Visualização, clique em Publicar.
Publicando o aplicativo Web
Quando o processo de publicação terminar, seu navegador padrão abrirá o site publicado.
Apêndice C: Usando snippets de código
Com snippets de código, você tem todo o código de que precisa ao seu alcance. O documento de laboratório informará exatamente quando você pode usá-los, conforme mostrado na figura a seguir.
Usando trechos de código do Visual Studio para inserir código em seu projeto
Para adicionar um snippet de código usando o teclado (somente C#)
- Coloque o cursor onde deseja inserir o código.
- Comece a digitar o nome do snippet (sem espaços ou hífens).
- Veja como o IntelliSense exibe os nomes dos snippets correspondentes.
- Selecione o snippet correto (ou continue digitando até que o nome do snippet inteiro seja selecionado).
- Pressione a tecla Tab duas vezes para inserir o snippet no local do cursor.
Comece a digitar o nome do snippet
Pressione Tab para selecionar o snippet destacado
Pressione Tab novamente e o snippet será expandido
Para adicionar um snippet de código usando o mouse (C#, Visual Basic e XML) 1. Clique com o botão direito do mouse onde deseja inserir o snippet de código.
- Selecione Inserir Snippet seguido de Meus Snippets de Código.
- Escolha o snippet relevante da lista, clicando nele.
Clique com o botão direito do mouse onde deseja inserir o snippet de código e selecione Inserir snippet
Escolha o snippet relevante da lista, clicando nele