Implantando um aplicativo Web ASP.NET com o SQL Server Compact usando o Visual Studio ou o Visual Web Developer: Implantando no Ambiente de Produção – 7 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 do SQL Server Compact usando o Visual Studio 2012 RC ou o Visual Studio Express 2012 RC para Web. Você também pode 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 a versão RC do Visual Studio 2012, mostra como implantar edições do SQL Server diferentes do SQL Server Compact e mostra como implantar nos Aplicativos Web do Serviço de Aplicativo do Azure, consulte ASP.NET Implantação da Web usando o Visual Studio.

Visão geral

Neste tutorial, você configura uma conta com um provedor de hospedagem e implanta seu aplicativo Web ASP.NET no ambiente de produção usando o recurso de publicação com um clique no Visual Studio.

Lembrete: se você receber uma mensagem de erro ou algo não funcionar durante o tutorial, verifique a página de solução de problemas.

Selecionando um provedor de hospedagem

Para o aplicativo da Contoso University e esta série de tutoriais, você precisa de um provedor que dê suporte ao ASP.NET 4 e à Implantação da Web. Uma empresa de hospedagem específica foi escolhida para que os tutoriais pudessem ilustrar a experiência completa de implantação em um site ativo. Cada empresa de hospedagem fornece recursos diferentes e a experiência de implantação em seus servidores varia um pouco. No entanto, o processo descrito neste tutorial é típico para o processo geral. O provedor de hospedagem usado para este tutorial, Cytanium.com, é um dos muitos disponíveis, e seu uso neste tutorial não constitui um endosso ou recomendação.

Quando estiver pronto para selecionar seu próprio provedor de hospedagem, você poderá comparar recursos e preços na galeria de provedores no site Microsoft.com/web.

Criando uma conta

Crie uma conta em seu provedor selecionado. Se o suporte para um banco de dados completo do SQL Server for um extra adicionado, você não precisará selecioná-lo para este tutorial, mas precisará dele para o tutorial migrando para o SQL Server mais adiante nesta série.

Para esses tutoriais, você não precisa registrar um novo nome de domínio. Você pode testar para verificar a implantação bem-sucedida usando a URL temporária atribuída ao site pelo provedor.

Depois que a conta for criada, você normalmente receberá um email de boas-vindas que contém todas as informações necessárias para implantar e gerenciar seu site. As informações enviadas pelo provedor de hospedagem serão semelhantes às mostradas aqui. O email de boas-vindas do Cytanium enviado aos novos proprietários da conta inclui as seguintes informações:

  • A URL para o site do painel de controle do provedor, onde você pode gerenciar as configurações do seu site. A ID e a senha especificadas estão incluídas nesta parte do email de boas-vindas para facilitar a referência. (Ambos foram alterados para um valor de demonstração para esta ilustração.)

    Welcome_Email_Control_Panel_URL

  • A versão padrão do .NET Framework e as informações sobre como alterá-la. Muitos sites de hospedagem usam o padrão 2.0, que funciona com aplicativos ASP.NET destinados ao .NET Framework 2.0, 3.0 ou 3.5. No entanto, a Contoso University é um aplicativo do .NET Framework 4, portanto, você precisa alterar essa configuração. (Para um aplicativo ASP.NET 4.5, você usaria a configuração do .NET 4.0.)

    Welcome_Email_Framework_Version

  • A URL temporária que você pode usar para acessar seu site. Quando essa conta foi criada, "contosouniversity.com" foi inserido como o nome de domínio existente. Portanto, a URL temporária é http://contosouniversity.com.vserver01.cytanium.com.

    Welcome_Email_Temporary_URL

  • Informações sobre como configurar bancos de dados e as cadeias de conexão necessárias para acessá-los:

    Welcome_Email_Database_Info

  • Informações sobre ferramentas e configurações para implantar seu site. (O email do Cytanium também menciona WebMatrix, que é omitido aqui.)

    Informações_Sobre_Envio_de_Email_De_Boas-Vindas

Definindo a versão do .NET Framework

O email de boas-vindas do Cytanium inclui um link para instruções sobre como alterar a versão do .NET Framework. Estas instruções explicam que isso pode ser feito por meio do painel de controle cytanium. Outros provedores têm sites de painel de controle que parecem diferentes ou podem instruir você a fazer isso de uma maneira diferente.

Vá para a URL do painel de controle. Depois de fazer logon com seu nome de usuário e senha, você verá o painel de controle.

Cytanium_Control_Panel

Na caixa Espaços de Hospedagem , segure o ponteiro sobre o ícone da Web e selecione Sites no menu.

Cytanium_Control_Panel_selecting_Web_Sites

Na caixa Sites da Web , clique em contosouniversity.com (o nome do site que você usou quando criou a conta).

Cytanium_Control_Panel_selecting_contosouniversity

Na caixa Propriedades do Site , selecione a guia Extensões .

Cytanium_Control_Panel_Extensions_tab

Altere ASP.NET do Pipeline Integrado 2.0 para o 4.0 (Pipeline Integrado) e clique em Atualizar.

Publicação no provedor de hospedagem

O email de boas-vindas do provedor de hospedagem inclui todas as configurações necessárias para publicar o projeto e você pode inserir essas informações manualmente em um perfil de publicação. Mas você usará um método mais fácil e menos propenso a erros para configurar a implantação para o provedor: você baixará um arquivo .publishsettings e o importará para um perfil de publicação.

No navegador, vá para o painel de controle do Cytanium e selecione Web e selecione Sites.

Painel de Controle selecionando Sites

Selecione o site do contosouniversity.com.

Painel de Controle selecionando contosouniversity.com

Selecione a guia Publicação na Web .

Guia Publicação na Web do Painel de Controle

Crie credenciais a serem usadas para publicação na Web inserindo um nome de usuário e uma senha. Você pode inserir as mesmas credenciais que usa para fazer logon no painel de controle. Em seguida, clique em Habilitar.

Painel de Controle criar credenciais de publicação

Clique em Baixar Perfil de Publicação para este site.

Baixar perfil de publicação do Painel de Controle

Quando for solicitado que você abra ou salve o arquivo, salve-o.

Salvar arquivo de perfil de publicação

No Gerenciador de Soluções no Visual Studio, clique com o botão direito do mouse no projeto ContosoUniversity e selecione Publicar. A caixa de diálogo Publicar Web é aberta na guia Visualização com o perfil de teste selecionado porque esse é o último perfil que você usou.

Selecione a guia Perfil e clique em Importar.

Botão Importar do Assistente de Publicação Web

Na caixa de diálogo Importar Configurações de Publicação , selecione o arquivo .publishsettings que você baixou e clique em Abrir. O assistente avança para a guia Conexão com todos os campos preenchidos.

Aba de Conexão do assistente de Publicação na Web

O arquivo .publishsettings coloca a URL permanente planejada para o site na caixa URL de Destino, mas se você ainda não comprou esse domínio, substitua o valor pela URL temporária. Para este exemplo, a URL é http://contosouniversity.com.vserver01.cytanium.com a única finalidade dessa caixa é especificar a URL para a qual o navegador será aberto automaticamente após a implantação com êxito. Se você deixá-lo em branco, a única consequência é que o navegador não será iniciado automaticamente após a implantação.

Clique em Validar Conexão para verificar se as configurações estão corretas e se você pode se conectar ao servidor. Como você viu anteriormente, uma marca de verificação verde confirma que a conexão é bem-sucedida.

Ao clicar em Validar Conexão, você poderá ver uma caixa de diálogo Erro de Certificado . Se você fizer isso, verifique se o nome do servidor é o esperado. Se estiver, selecione Salvar este certificado para sessões futuras do Visual Studio e clique em Aceitar. (Esse erro significa que o provedor de hospedagem optou por evitar a despesa de comprar um certificado SSL para a URL na qual você está implantando. Se você preferir estabelecer uma conexão segura usando um certificado válido, entre em contato com seu provedor de hospedagem.)

Erro de certificado

Clique em Próximo.

Na seção Bancos de Dados da guia Configurações, insira os mesmos valores que você inseriu para o perfil de publicação de teste. Você encontrará as cadeias de conexão necessárias nas listas suspensas.

  • Na caixa de cadeia de conexão para SchoolContext, selecione Data Source=|DataDirectory|School-Prod.sdf
  • Em SchoolContext, selecione Aplicar Migrations Code-First.
  • Na caixa de string de conexão para DefaultConnection, selecione Data Source=|DataDirectory|aspnet-Prod.sdf
  • Em DefaultConnection, deixe a opção Atualizar banco de dados desmarcada.

Guia de Configurações do Assistente de Publicação Web

Clique em Próximo.

Na guia Visualização , clique em Iniciar Visualização para ver uma lista dos arquivos que serão copiados. Você verá a mesma lista que viu anteriormente quando implantou no IIS no computador local.

Antes de publicar, altere o nome do perfil para que seu arquivo de transformação Web.Production.config seja aplicado. Selecione a guia Perfil e clique em Gerenciar Perfis.

Publicar o assistente da Web gerenciar perfis

Na caixa de diálogo Editar Perfis de Publicação na Web , selecione o perfil de produção, clique em Renomear e altere o nome do perfil para Produção. Em seguida, clique em Fechar.

Caixa de diálogo Editar Perfis de Publicação na Web

Clique em Publicar.

O aplicativo é publicado no provedor de hospedagem. O resultado é mostrado na janela Saída .

Janela de saída após a implantação

O navegador é aberto automaticamente para a URL que você inseriu na caixa URL de Destino na guia Conexão do assistente Publicar Web . Você vê a mesma home page que quando executa o site no Visual Studio, exceto que agora não há nenhum indicador de ambiente "(Test)" ou "(Dev)" na barra de título. Isso indica que o indicador de ambiente Web.config transformação funcionou corretamente.

Observação

Se você ainda vir "(Test)" no título, exclua a pasta obj do projeto ContosoUniversity e reimplante. Nas versões de pré-lançamento do software, o arquivo de transformação aplicado anteriormente (Web.Test.config) pode ser aplicado novamente, embora você esteja usando o perfil de produção.

Home_page_Prod

Antes de executar uma página que cause acesso ao banco de dados, verifique se o Elmah poderá registrar todos os erros que ocorrerem.

Definindo permissões de pasta para Elmah

Como você se lembra do tutorial anterior desta série, você deve verificar se o aplicativo tem permissões de gravação para a pasta em seu aplicativo em que o Elmah armazena arquivos de log de erros. Ao implantar o IIS localmente em seu computador, defina essas permissões manualmente. Nesta seção, você verá como definir permissões no Cytanium. (Alguns provedores de hospedagem podem não permitir que você faça isso; eles podem oferecer uma ou mais pastas predefinidas com permissões de gravação. Nesse caso, você teria que modificar seu aplicativo para usar as pastas especificadas.)

Você pode definir permissões de pasta no painel de controle cytanium. Vá para a URL do painel de controle e selecione o Gerenciador de Arquivos.

Painel_de_Controle_do_Cytanium_com_gerenciador_de_arquivos_selecionado

Na caixa Gerenciador de Arquivos , selecione contosouniversity.com e, em seguida , wwwroot para ver a pasta raiz do aplicativo. Clique no ícone de cadeado ao lado de Elmah.

Cytanium_Control_Panel_File_Manager_at_root_folder

Na janela Arquivo/Permissões de Pasta, selecione as caixas de seleção Leitura e Gravação para contosouniversity.com e clique em Definir Permissões.

Cytanium_Control_Panel_File_Folder_Permissions_Elmah

Verifique se Elmah tem acesso de gravação à pasta Elmah ao provocar um erro e, em seguida, exibir o relatório de erro do Elmah. Solicite uma URL inválida como Studentsxxx.aspx. Como antes, você vê a página GenericErrorPage.aspx . Clique no link Sair e, em seguida, execute Elmah.axd. Primeiro, você obtém a página Log In, que valida que a transformação de Web.config adicionou com êxito a autorização Elmah. Depois de fazer logon, você verá o relatório que mostra o erro que você acabou de causar.

Elmah.axd_Prod

Teste no ambiente de produção

Abra a página Alunos. O aplicativo tenta acessar o banco de dados da Escola pela primeira vez, o que aciona as migrações Code First para criar o banco de dados. Quando a página é exibida após um momento de atraso, ela mostra que não há alunos.

Students_page_Prod

Execute a página Instrutores para verificar se os dados de Semente inseriram com êxito os dados do instrutor no banco de dados.

Instructors_page_Prod

Como você fez no ambiente de teste, você deseja verificar se as atualizações de banco de dados funcionam no ambiente de produção, mas normalmente não deseja inserir dados de teste em seu banco de dados de produção. Para este tutorial, você usará o mesmo método que fez em teste. Mas, em um aplicativo real, talvez você queira encontrar um método que valide se as atualizações de banco de dados foram bem-sucedidas sem introduzir dados de teste no banco de dados de produção. Em alguns aplicativos, pode ser prático adicionar algo e excluí-lo.

Adicione um aluno e exiba os dados inseridos na página Alunos para verificar se você pode atualizar dados no banco de dados.

Add_Students_page_Prod

Students_page_with_new_student_Prod

Valide se as regras de autorização estão funcionando corretamente selecionando Créditos de Atualização no menu Cursos . A página de Logon é exibida. Insira as credenciais da sua conta de administrador, clique em Fazer Logon e a página Atualizar Créditos será exibida.

Log_In_page_Prod

Se o logon for bem-sucedido, a página Atualizar Créditos será exibida. Isso indica que o banco de dados de associação ASP.NET (com a conta de administrador único) foi implantado com êxito.

Atualizar_página_de_créditos_Produção

Agora você implantou e testou com êxito seu site e ele está disponível publicamente pela Internet.

Criando um ambiente de teste mais confiável

Conforme explicado no tutorial Implantando no Ambiente de Teste , o ambiente de teste mais confiável seria uma segunda conta no provedor de hospedagem que é exatamente como a conta de produção. Isso seria mais caro do que usar o IIS local como seu ambiente de teste, pois você teria que se inscrever para uma segunda conta de hospedagem. No entanto, se isso impedir erros ou interrupções no site de produção, você poderá decidir que vale a pena o custo.

A maior parte do processo para criar e implantar em uma conta de teste é semelhante ao que você já fez para implantar na produção:

  • Crie um arquivo de transformação Web.config.
  • Crie uma conta no provedor de hospedagem.
  • Crie um novo perfil de publicação e implante na conta de teste.

Impedindo o acesso público ao site de teste

Uma consideração importante para a conta de teste é que ela estará ativa na Internet, mas você não quer que o público a use. Para manter o site privado, você pode usar um ou mais dos seguintes métodos:

  • Entre em contato com o provedor de hospedagem para definir regras de firewall que permitem o acesso ao site de teste somente de endereços IP que você usa para teste.
  • Disfarçar a URL para que ela não seja semelhante à URL do site público.
  • Use um arquivo robots.txt para garantir que os mecanismos de pesquisa não rastreiem o site de teste nem relatem links para ele nos resultados da pesquisa.

O primeiro desses métodos é obviamente o mais seguro, mas o procedimento para isso é específico para cada provedor de hospedagem e não será abordado neste tutorial. Se você organizar com seu provedor de hospedagem para permitir que apenas seu endereço IP navegue até a URL da conta de teste, você teoricamente não precisará se preocupar com os mecanismos de pesquisa que o rastreiam. Mas, mesmo nesse caso, implantar um arquivo robots.txt é uma boa ideia como um backup, caso essa regra de firewall seja desativada acidentalmente.

O arquivo robots.txt entra na pasta do projeto e deve ter o seguinte texto:

User-agent: *
Disallow: /

A User-agent linha informa aos mecanismos de pesquisa que as regras no arquivo se aplicam a todos os rastreadores da Web do mecanismo de pesquisa (robôs) e a Disallow linha especifica que nenhuma página no site deve ser rastreada.

Você provavelmente deseja que os mecanismos de pesquisa catalogem seu site de produção, portanto, você precisa excluir esse arquivo da implantação de produção. Para fazer isso, confira Posso excluir arquivos ou pastas específicos da implantação? em ASP.NET perguntas frequentes sobre implantação de projeto de aplicativo Web. Especifique a exclusão somente para o perfil de publicação de produção.

Criar uma segunda conta de hospedagem é uma abordagem para trabalhar com um ambiente de teste que não é necessário, mas pode valer a pena a despesa adicional. Nos tutoriais a seguir, você continuará usando o IIS como seu ambiente de teste.

No próximo tutorial, você atualizará o código do aplicativo e implantará sua alteração nos ambientes de teste e produção.