Compartilhar via


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

Baixar o Projeto Inicial

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:

  1. 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.
  2. 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.
  3. 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.

Inetmgr_showing_4.0_app_pools

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
    

    aspnet_regiis_installing_ASP.NET_4

    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.

Inetmgr_selecting_Basic_Settings_for_app_pool

Na caixa de diálogo Editar Pool de Aplicativos, altere .NET Framework versão para .NET Framework v4.0.30319 e clique em OK.

Selecting_.NET_4_for_DefaultAppPool

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.

Publish_Web_wizard_Profile_tab

Na lista suspensa, selecione <Novo...>.

Na caixa de diálogo Novo Perfil , insira "Teste" e clique em OK.

New_Profile_dialog_box

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.

Publish_Web_wizard_Connection_tab_Test

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.

Publish_Web_wizard_Connection_tab_validated

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.

Publish_Web_wizard_Settings_tab_Test

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.

Publish_Web_wizard_Preview_tab_Test

Publish_Web_wizard_Preview_tab_Test_with_file_list

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.

Output_window_publish_Test

O navegador é aberto automaticamente na home page da Contoso University em execução no IIS no computador local.

Captura de tela da janela Explorer da Internet, que mostra que o indicador de ambiente da Contoso University é Teste em vez de Desenvolvimento.

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.

Captura de tela da janela Explorer da Internet, que mostra que o indicador de ambiente da Contoso University é Teste em vez de Desenvolvimento.

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.)

Students_page_Test

Execute a página Instrutores para verificar se o Code First semeou o banco de dados com dados de instrutor:

Instructors_page_Test

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:

Add_Students_page_Test

Students_page_with_new_student_Test

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.

Log_In_page_Test

Update_Credits_page_Test

Verifique se existe uma pasta Elmah com apenas o arquivo de espaço reservado nela.

Elmah_folder_Test

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.

Captura de tela que realça 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:

DatabasePublish_connection_string

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:

  1. 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.
  2. 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: