Implantando um aplicativo Web ASP.NET com SQL Server Compact usando o Visual Studio ou o Visual Web Developer: Implantando no IIS como um ambiente de teste – 5 de 12
por Tom Dykstra
Esta série de tutoriais mostra como implantar (publicar) um projeto de aplicativo Web ASP.NET que inclui um banco de dados SQL Server Compact usando o Visual Studio 2012 RC ou o Visual Studio Express RC 2012 para Web. Você também poderá usar o Visual Studio 2010 se instalar a Atualização de Publicação na Web. Para obter uma introdução à série, consulte o primeiro tutorial da série.
Para obter um tutorial que mostra os recursos de implantação introduzidos após o lançamento do RC do Visual Studio 2012, mostra como implantar SQL Server edições diferentes de SQL Server Compact e mostra como implantar no Serviço de Aplicativo do Azure Aplicativos Web, confira Implantação da Web ASP.NET usando o Visual Estúdio.
Visão geral
Este tutorial mostra como implantar um aplicativo Web ASP.NET no IIS no computador local.
Ao desenvolver um aplicativo, você geralmente testa executando-o no Visual Studio. Por padrão, isso significa que você está usando o Servidor de Desenvolvimento do Visual Studio (também conhecido como Cassini). O Servidor de Desenvolvimento do Visual Studio facilita o teste durante o desenvolvimento no Visual Studio, mas não funciona exatamente como o IIS. Como resultado, é possível que um aplicativo seja executado corretamente quando você testá-lo no Visual Studio, mas falhará quando ele for implantado no IIS em um ambiente de hospedagem.
Você pode testar seu aplicativo de forma mais confiável destas maneiras:
- Use IIS Express ou IIS completo em vez do Servidor de Desenvolvimento do Visual Studio ao testar no Visual Studio durante o desenvolvimento. Esse método geralmente emula com mais precisão como seu site será executado no IIS. No entanto, esse método não testa o processo de implantação nem valida que o resultado do processo de implantação será executado corretamente.
- Implante o aplicativo no IIS em seu computador de desenvolvimento usando o mesmo processo que você usará posteriormente para implantá-lo em seu ambiente de produção. Esse método valida o processo de implantação, além de validar se o aplicativo será executado corretamente no IIS.
- Implante o aplicativo em um ambiente de teste o mais próximo possível do seu ambiente de produção. Como o ambiente de produção desses tutoriais é um provedor de hospedagem de terceiros, o ambiente de teste ideal seria uma segunda conta com o provedor de hospedagem. Você usaria essa segunda conta apenas para teste, mas ela seria configurada da mesma maneira que a conta de produção.
Este tutorial mostra as etapas para a opção 2. As diretrizes para a opção 3 são fornecidas no final do tutorial Implantando no Ambiente de Produção e, no final deste tutorial, há links para recursos para a opção 1.
Lembrete: se você receber uma mensagem de erro ou algo não funcionar durante o tutorial, marcar página de solução de problemas.
Configurando o aplicativo para ser executado em confiança média
Antes de instalar o IIS e implantá-lo, você alterará uma configuração de arquivo Web.config para fazer com que o site seja executado como em um ambiente típico de hospedagem compartilhada.
Os provedores de hospedagem normalmente executam seu site em confiança média, o que significa que há algumas coisas que ele não tem permissão para fazer. Por exemplo, o código do aplicativo não pode acessar o Registro do Windows e não pode ler ou gravar arquivos que estão fora da hierarquia de pastas do aplicativo. Por padrão, seu aplicativo é executado em alta confiança no computador local, o que significa que o aplicativo pode ser capaz de fazer coisas que falhariam quando você o implantasse em produção. Portanto, para fazer com que o ambiente de teste reflita com mais precisão o ambiente de produção, você configurará o aplicativo para ser executado em confiança média.
No arquivo de Web.config do aplicativo, adicione um elemento de confiança no elemento system.web , conforme mostrado neste exemplo.
<configuration>
<!-- Settings -->
<system.web>
<trust level="Medium" />
<!-- Settings -->
</system.web>
</configuration>
O aplicativo agora será executado em confiança média no IIS, mesmo no computador local. Essa configuração permite capturar o mais cedo possível qualquer tentativa do código do aplicativo de fazer algo que falharia na produção.
Observação
Se você estiver usando Migrações do Entity Framework Code First, verifique se você tem a versão 5.0 ou posterior instalada. No Entity Framework versão 4.3, as migrações exigem confiança total para atualizar o esquema de banco de dados.
Instalando o IIS e a Implantação da Web
Para implantar no IIS em seu computador de desenvolvimento, você deve ter o IIS e a Implantação da Web instalados. Eles não estão incluídos na configuração padrão do Windows 7. Se você já tiver instalado o IIS e a Implantação da Web, pule para a próxima seção.
Usar o Web Platform Installer é a maneira preferencial de instalar o IIS e a Implantação da Web, pois o Web Platform Installer instala uma configuração recomendada para o IIS e instala automaticamente os pré-requisitos do IIS e da Implantação da Web, se necessário.
Para executar o Web Platform Installer para instalar o IIS e a Implantação da Web, use o link a seguir. Se você já tiver instalado o IIS, a Implantação da Web ou qualquer um dos componentes necessários, o Web Platform Installer instalará apenas o que está faltando.
Definindo o pool de aplicativos padrão como .NET 4
Depois de instalar o IIS, execute o Gerenciador do IIS para garantir que o .NET Framework versão 4 seja atribuído ao pool de aplicativos padrão.
No menu Iniciar do Windows, selecione Executar, insira "inetmgr" e clique em OK. (Se o comando Executar não estiver no menu Iniciar , você poderá pressionar a Tecla Windows e o R para abri-lo. Ou clique com o botão direito do mouse na barra de tarefas, clique em Propriedades, selecione a guia Menu Iniciar , clique em Personalizar e selecioneExecutar comando.)
No painel Connections, expanda o nó do servidor e selecione Pools de Aplicativos. No painel Pools de Aplicativos , se DefaultAppPool for atribuído ao .NET Framework versão 4 como na ilustração a seguir, pule para a próxima seção.
Se você vir apenas dois pools de aplicativos e ambos estiverem definidos como o .NET Framework 2.0, será necessário instalar ASP.NET 4 no IIS:
Abra uma janela do prompt de comando clicando com o botão direito do mouse em Prompt de Comando no menu Iniciar do Windows e selecionando Executar como Administrador. Em seguida, execute aspnet_regiis.exe para instalar o ASP.NET 4 no IIS, usando os comandos a seguir. (Em sistemas de 64 bits, substitua "Framework" por "Framework64".)
cd %windir%\Microsoft.NET\Framework\v4.0.30319 aspnet_regiis.exe –iru
Esse comando cria novos pools de aplicativos para o .NET Framework 4, mas o pool de aplicativos padrão ainda será definido como 2.0. Você implantará um aplicativo direcionado ao .NET 4 nesse pool de aplicativos, portanto, precisará alterar o pool de aplicativos para o .NET 4.
Se você fechou o Gerenciador do IIS, execute-o novamente, expanda o nó do servidor e clique em Pools de Aplicativos para exibir o painel Pools de Aplicativos novamente.
No painel Pools de Aplicativos , clique em DefaultAppPool e, no painel Ações , clique em Configurações Básicas.
Na caixa de diálogo Editar Pool de Aplicativos, altere .NET Framework versão para .NET Framework v4.0.30319 e clique em OK.
Agora você está pronto para publicar no IIS.
Publicação no IIS
Há várias maneiras de implantar usando o Visual Studio 2010 e a Implantação da Web:
- Use a publicação com um clique no Visual Studio.
- Crie um pacote de implantação e instale-o usando a interface do usuário do Gerenciador do IIS. O pacote de implantação consiste em um arquivo de.zip que contém todos os arquivos e metadados necessários para instalar um site no IIS.
- Crie um pacote de implantação e instale-o usando a linha de comando.
O processo que você passou nos tutoriais anteriores para configurar o Visual Studio para automatizar tarefas de implantação se aplica a todos esses três métodos. Nestes tutoriais, você usará o primeiro desses métodos. Para obter informações sobre como usar pacotes de implantação, consulte ASP.NET Mapa de Conteúdo de Implantação.
Antes de publicar, verifique se você está executando o Visual Studio no modo de administrador. (No menu Iniciar do Windows 7, clique com o botão direito do mouse no ícone da versão do Visual Studio que você está usando e selecione Executar como Administrador.) O modo de administrador é necessário para publicação somente quando você está publicando no IIS no computador local.
Em Gerenciador de Soluções, clique com o botão direito do mouse no projeto ContosoUniversity (não no projeto ContosoUniversity.DAL) e selecione Publicar.
O assistente Publicar Web é exibido.
Na lista suspensa, selecione <Novo...>.
Na caixa de diálogo Novo Perfil , insira "Teste" e clique em OK.
Esse nome é o mesmo que o nó do meio do arquivo de transformação Web.Test.config que você criou anteriormente. Essa correspondência faz com que as transformações de Web.Test.config sejam aplicadas quando você publica usando esse perfil.
O assistente avança automaticamente para a guia Conexão .
Na caixa URL do Serviço , insira localhost.
Na caixa Site/aplicativo , insira Site Padrão/ContosoUniversity.
Na caixa URL de destino , insira http://localhost/ContosoUniversity
.
A configuração url de destino não é necessária. Quando o Visual Studio terminar de implantar o aplicativo, ele abrirá automaticamente o navegador padrão para essa URL. Se você não quiser que o navegador abra automaticamente após a implantação, deixe essa caixa em branco.
Clique em Validar Conexão para verificar se as configurações estão corretas e se você pode se conectar ao IIS no computador local.
Uma marca de marcar verde verifica se a conexão foi bem-sucedida.
Clique em Avançar para avançar para a guia Configurações .
A caixa suspensa Configuração especifica a configuração de build a ser implantada. O valor padrão é Release, que é o que você deseja.
Deixe a caixa Remover arquivos adicionais no destino marcar desmarcada. Como essa é sua primeira implantação, ainda não haverá nenhum arquivo na pasta de destino.
Na seção Bancos de Dados, insira o seguinte valor na caixa cadeia de conexão para SchoolContext:
Data Source=|DataDirectory|School-Prod.sdf
O processo de implantação colocará esse cadeia de conexão no arquivo de Web.config implantado porque Usar esse cadeia de conexão em runtime está selecionado.
Também em SchoolContext, selecione Aplicar Migrações do Code First. Essa opção faz com que o processo de implantação configure o arquivo Web.config implantado para especificar o MigrateDatabaseToLatestVersion
inicializador. Esse inicializador atualiza automaticamente o banco de dados para a versão mais recente quando o aplicativo acessa o banco de dados pela primeira vez após a implantação.
Na caixa cadeia de conexão para DefaultConnection, insira o seguinte valor:
Data Source=|DataDirectory|aspnet-Prod.sdf
Deixe o banco de dados De atualização limpo. O banco de dados de associação será implantado copiando o arquivo .sdf em App_Data e você não deseja que o processo de implantação faça mais nada com esse banco de dados.
Clique em Avançar para avançar para a guia Visualização .
Na guia Visualização , clique em Iniciar Visualização para ver uma lista dos arquivos que serão copiados.
Clique em Publicar.
Se o Visual Studio não estiver no modo de administrador, você poderá receber uma mensagem de erro que indica um erro de permissões. Nesse caso, feche o Visual Studio, abra-o no modo de administrador e tente publicar novamente.
Se o Visual Studio estiver no modo de administrador, a janela Saída relatará compilação e publicação bem-sucedidas.
O navegador é aberto automaticamente na home page da Contoso University em execução no IIS no computador local.
Teste no ambiente de teste
Observe que o indicador de ambiente mostra "(Teste)" em vez de "(Dev)", o que mostra que a transformação Web.config para o indicador de ambiente foi bem-sucedida.
Execute a página Alunos para verificar se o banco de dados implantado não tem alunos. Quando você seleciona essa página, pode levar alguns minutos para ser carregada porque o Code First cria o banco de dados e executa o Seed
método . (Ele não fez isso quando você estava na home page porque o aplicativo ainda não tentou acessar o banco de dados.)
Execute a página Instrutores para verificar se o Code First semeou o banco de dados com dados de instrutor:
Selecione Adicionar Alunos no menu Alunos , adicione um aluno e exiba o novo aluno na página Alunos para verificar se você pode gravar com êxito no banco de dados:
No menu Cursos , selecione Atualizar Créditos. A página Atualizar Créditos requer permissões de administrador, portanto, a página De logon é exibida. Insira as credenciais de conta de administrador que você criou anteriormente ("admin" e "Pas$w0rd"). A página Atualizar Créditos é exibida, que verifica se a conta de administrador que você criou no tutorial anterior foi implantada corretamente no ambiente de teste.
Verifique se existe uma pasta Elmah com apenas o arquivo de espaço reservado nela.
Revisão das alterações automáticas de Web.config para Migrações do Code First
Abra o arquivo Web.config no aplicativo implantado em C:\inetpub\wwwroot\ContosoUniversity e você pode ver onde o processo de implantação configurado Migrações do Code First atualizar automaticamente o banco de dados para a versão mais recente.
O processo de implantação também criou um novo cadeia de conexão para Migrações do Code First usar exclusivamente para atualizar o esquema de banco de dados:
Esse cadeia de conexão adicional permite que você especifique uma conta de usuário para atualizações de esquema de banco de dados e uma conta de usuário diferente para acesso a dados do aplicativo. Por exemplo, você pode atribuir a função db_owner a Migrações do Code First e db_datareader e db_datawriter funções ao aplicativo. Esse é um padrão comum de defesa detalhada que impede que o código potencialmente mal-intencionado no aplicativo altere o esquema do banco de dados. (Por exemplo, isso pode acontecer em um ataque de injeção de SQL bem-sucedido.) Esse padrão não é usado por esses tutoriais. Ele não se aplica a SQL Server Compact e não se aplica quando você migra para SQL Server em um tutorial posterior nesta série. O site do Cytanium oferece apenas uma conta de usuário para acessar o banco de dados SQL Server que você cria no Cytanium. Se você conseguir implementar esse padrão em seu cenário, poderá fazê-lo executando as seguintes etapas:
- Na guia Configurações do assistente Publicar Web, insira o cadeia de conexão que especifica um usuário com permissões completas de atualização de esquema de banco de dados e desmarque a caixa Usar este cadeia de conexão em runtime marcar. No arquivo Web.config implantado, isso se torna o
DatabasePublish
cadeia de conexão. - Crie uma transformação de arquivo Web.config para o cadeia de conexão que você deseja que o aplicativo use em tempo de execução.
Agora você implantou seu aplicativo no IIS em seu computador de desenvolvimento e o testou lá. Isso verifica se o processo de implantação copiou o conteúdo do aplicativo para o local certo (excluindo os arquivos que você não queria implantar) e também que a Implantação da Web configurou o IIS corretamente durante a implantação. No próximo tutorial, você executará mais um teste que localiza uma tarefa de implantação que ainda não foi feita: definir permissões de pasta na pasta Elmah .
Mais informações
Para obter informações sobre como executar o IIS ou IIS Express no Visual Studio, consulte os seguintes recursos:
- IIS Express Visão geral no site do IIS.net.
- Apresentando IIS Express no blog de Scott Guthrie.
- Como especificar o servidor Web para projetos Web no Visual Studio.
- Principais diferenças entre o IIS e o servidor de desenvolvimento ASP.NET no site ASP.NET.
- Teste seu ASP.NET MVC ou Web Forms Application no IIS 7 em 30 segundos no blog de Rick Anderson. Essa entrada fornece exemplos de por que o teste com o Cassini (Visual Studio Development Server) não é tão confiável quanto o teste em IIS Express e por que o teste em IIS Express não é tão confiável quanto o teste no IIS.