Compartilhar via


Configurar ambientes de preparo no Serviço de Aplicativo do Azure

Ao implantar seu aplicativo Web, aplicativo Web no Linux, back-end móvel ou aplicativo de API no Serviço de Aplicativo do Azure, você pode usar um slot de implantação separado em vez do slot de produção padrão. Essa abordagem estará disponível se você executar na camada Standard, Premium ou Isolada de um plano do Serviço de Aplicativo. Os slots de implantação são aplicativos dinâmicos que possuem seus próprios nomes de host. Os elementos de configuração e conteúdo do aplicativo podem ser permutados entre dois slots de implantação, incluindo o slot de produção.

A implantação do aplicativo em um slot de não produção traz os seguintes benefícios:

  • Você pode validar as alterações do aplicativo antes de trocar o slot para produção.

  • Você pode verificar se todas as instâncias do slot estão aquecidas antes de trocá-lo para produção. Essa abordagem elimina o tempo de inatividade ao implantar o aplicativo. O redirecionamento de tráfego é contínuo. Nenhuma solicitação é descartada devido a operações de troca.

    Todo esse fluxo de trabalho pode ser automatizado configurando a troca automática quando a validação de pré-troca não for necessária.

  • Após a troca, o slot com o aplicativo de preparo anterior terá o aplicativo de produção anterior. Se as alterações trocadas para o slot de produção não correspondem às suas expectativas, você pode realizar a mesma troca imediatamente para ter o último site válido conhecido de volta.

Não há encargos adicionais pelo uso de slots de implantação. Cada tipo de plano do Serviço de Aplicativo dá suporte a um número diferente de slots de implantação. Para descobrir o número de slots compatíveis com a camada do aplicativo, consulte os limites do Serviço de Aplicativo.

Para dimensionar seu aplicativo para uma camada diferente, verifique se a camada de destino dá suporte ao número de slots que seu aplicativo já usa. Por exemplo, se o aplicativo tiver mais de cinco slots, você não poderá dimensioná-lo para baixo para a camada Standard. A camada Standard dá suporte apenas a cinco slots de implantação.

O vídeo a seguir complementa as etapas deste artigo ilustrando como configurar ambientes de preparo no Serviço de Aplicativo do Azure.

Pré-requisitos

  • Permissões para executar a operação de slot desejada. Para obter informações sobre as permissões necessárias, consulte operações do provedor de recursos. Pesquise por slot, por exemplo.

Adicionar um slot

Para habilitar vários slots de implantação, o aplicativo deve estar em execução na camada Standard, Premium ou Isolada.

  1. No portal do Azure, acesse a página de gerenciamento do aplicativo.

  2. No menu à esquerda, selecione Implantação>Slots de implantação. Em seguida, selecioneAdicionar.

    Observação

    Se o aplicativo ainda não estiver na camada Standard, Premium ou Isolada, selecione Atualizar. Vá para a guia Dimensionar do seu aplicativo antes de continuar.

  3. Na caixa de diálogo Adicionar Slot , dê um nome ao slot e selecione se deseja clonar uma configuração de aplicativo de outro slot de implantação. Selecione Adicionar para continuar.

    Captura de tela que mostra as seleções de como configurar um novo slot de implantação chamado

    Você pode clonar a configuração de qualquer slot existente. As configurações que podem ser clonadas incluem configurações de aplicativo, cadeias de conexão, versões da estrutura de linguagem, soquetes da Web, versão HTTP e número de bits da plataforma.

    Observação

    Atualmente, um ponto de extremidade privado não é clonado entre slots.

  4. Depois de inserir as configurações, selecione Fechar para fechar a caixa de diálogo. Agora, o novo slot aparece na página Implantação de slots. Por padrão, o Tráfego % é definido como 0 para o novo slot, com todo o tráfego dos clientes sendo roteado para o slot de produção.

  5. Selecione o novo slot de implantação para abrir sua página de recursos.

    Captura de tela que mostra como abrir a página de gerenciamento de um slot de implantação no portal.

    O slot de preparo tem uma página de gerenciamento como qualquer outro aplicativo do Serviço de Aplicativo. É possível alterar a configuração do slot. Para lembrar que você está exibindo o slot de implantação, o nome do aplicativo e o nome do slot aparecem na URL. O tipo de aplicativo é Serviço de Aplicativo (Slot). Você também pode ver o slot como um aplicativo separado em seu grupo de recursos, com as mesmas denominações.

  6. Na página de recursos do slot, selecione a URL do aplicativo. O slot de implantação tem seu próprio nome de host e também é um aplicativo dinâmico. Para limitar o acesso público ao slot de implantação, consulte Configurar restrições de acesso do Serviço de Aplicativo do Azure.

O novo slot de implantação não tem nenhum conteúdo, mesmo se as configurações forem clonadas de outro slot. Por exemplo, você pode publicar neste slot com o Git. É possível fazer uma implantação no slot de outro branch do repositório ou de outro repositório. O artigo Obter um perfil de publicação do Serviço de Aplicativo do Azure pode fornecer as informações necessárias para a implantação no slot. O Visual Studio pode importar o perfil para implantar o conteúdo no slot.

A URL do slot tem o formato http://sitename-slotname.azurewebsites.net. Para manter o comprimento da URL dentro dos limites de DNS necessários, o nome do site é truncado em 40 caracteres. O nome do site e o nome do slot juntos precisam ter menos de 59 caracteres.

Entender o que acontece durante uma troca

Etapas da operação de troca

Quando você troca dois slots, o Serviço de Aplicativo faz o seguinte para garantir que o slot de destino não tenha tempo de inatividade:

  1. Aplique as seguintes configurações do slot de destino (por exemplo, o slot de produção) a todas as instâncias do slot de origem:

    Quando qualquer uma das configurações for aplicada ao slot de origem, a alteração disparará todas as instâncias no slot de origem para reiniciar. Durante uma troca com a versão prévia, essa ação marca o final da primeira fase. A operação de troca está pausada. Você pode validar se o slot de origem funciona corretamente com as configurações do slot de destino.

  2. Aguarde até que todas as instâncias no slot de origem terminem a reinicialização. Se alguma instância não conseguir reiniciar, a operação de troca reverte todas as alterações no slot de origem e interrompe a operação.

  3. Se o cache local estiver habilitado, dispare a inicialização do cache local fazendo uma solicitação HTTP para a raiz do aplicativo (/) em cada instância do slot de origem. Aguarde até que todas as instâncias retornem uma resposta HTTP. A inicialização do cache local causa outra reinicialização em cada instância.

  4. Se troca automática estiver habilitada com a preparação personalizada, dispare a inicialização de aplicativos em cada instância do slot de origem.

    Se applicationInitialization não for especificado, dispare uma solicitação HTTP para a raiz do aplicativo em cada instância do slot de origem.

    Se uma instância retornar qualquer resposta HTTP, ela será considerada como ativada.

  5. Se todas as instâncias no slot de origem forem aquecidas com êxito, troque os dois slots alternando as regras de roteamento. Após essa etapa, o slot de destino (por exemplo, o slot de produção) terá o aplicativo que foi anteriormente ativado no slot de origem.

  6. Agora que o slot de origem tem o aplicativo de pré-troca que estava anteriormente no slot de destino, execute a mesma operação aplicando todas as configurações e reiniciando as instâncias.

A qualquer momento da operação de troca, todo o trabalho de inicialização dos aplicativos trocados ocorre no slot de origem. O slot de destino permanecerá online enquanto o slot de origem estiver sendo preparado e ativado, independentemente de a troca ser bem-sucedida ou falhar. Para trocar um slot de preparo pelo slot de produção, verifique se o slot de produção é sempre o slot de destino. Dessa forma, a operação de troca não afetará seu aplicativo de produção.

Observação

Suas instâncias de produção anteriores serão trocadas para preparo após essa operação de troca. Essas instâncias serão recicladas na última etapa do processo de troca. Caso você tenha operações de execução prolongada no seu aplicativo, elas serão abandonadas quando os trabalhadores reciclarem. Isso também se aplica a aplicativos de funções. Verifique se o código do aplicativo está escrito de forma tolerante a falhas.

Etapas para tornar um slot não trocável

Ao clonar uma configuração de outro slot de implantação, a configuração clonada será editável. Alguns elementos de configuração seguem o conteúdo em uma troca (eles são não específicos do slot). Outros elementos de configuração permanecem no mesmo slot após uma troca (eles são específicos do slot).

Quando você troca slots, essas configurações são trocadas:

  • Pilha e versão de linguagem, 32 bits e 64 bits
  • Configurações do aplicativo (podem ser configuradas para fixarem-se a um slot)
  • Cadeias de conexão (podem ser configuradas para fixarem-se a um slot)
  • Contas de armazenamento montadas (podem ser configuradas para ficarem fixas em um slot)
  • Mapeamentos de manipulador
  • Certificados públicos
  • Conteúdo de WebJobs
  • Conexões híbridas (atualmente)
  • Pontos de extremidade de serviço (atualmente)
  • Rede de Distribuição de Conteúdo do Azure (atualmente)
  • Mapeamentos de caminho
  • Integração de rede virtual

Quando você troca slots, essas configurações não são trocadas:

  • Configurações gerais não mencionadas na lista anterior
  • Pontos de extremidade de publicação
  • Nomes de domínio personalizados
  • Certificados não públicos e configurações de TLS/SSL
  • Configurações de escala
  • Agendadores de WebJobs
  • Restrições de IP
  • Always On
  • Configurações de diagnóstico
  • CORS (compartilhamento de recursos entre origens)
  • Identidades gerenciadas e configurações relacionadas
  • Configurações que terminam com o sufixo _EXTENSION_VERSION
  • Configurações que o Service Connector criou

Observação

Para tornar as configurações trocáveis, adicione a configuração WEBSITE_OVERRIDE_PRESERVE_DEFAULT_STICKY_SLOT_SETTINGS do aplicativo em cada slot do aplicativo. Defina seu valor como 0 ou false. Essas configurações são todas trocáveis ou não podem ser trocas. Você não pode tornar apenas algumas configurações intercambiáveis e outras não. As identidades gerenciadas nunca são trocadas. Essa substituição da configuração de aplicativo não as afeta.

Determinadas configurações de aplicativo que se aplicam a configurações não intercambiáveis também são trocadas. Por exemplo, como as configurações de diagnóstico não são trocadas, as configurações de aplicativo relacionadas, como WEBSITE_HTTPLOGGING_RETENTION_DAYS e DIAGNOSTICS_AZUREBLOBRETENTIONDAYS, também não são trocadas, mesmo que não apareçam como configurações de slot.

Para definir uma configuração de aplicativo ou uma cadeia de conexão para continuar com um slot específico que não é trocado:

  1. Vá para Configurações>Variável de Ambiente para esse slot.

  2. Adicione ou edite a configuração e, em seguida, selecione Configuração do slot de implantação. A seleção dessa caixa de seleção informa ao Serviço de Aplicativo que a configuração não é permutável.

  3. Selecione Aplicar.

Captura de tela que mostra a caixa de seleção para definir uma configuração de aplicativo como uma configuração de slot no portal do Azure.

Trocar slots de implantação

Você pode alternar os slots de implantação na página Slots de Implantação do aplicativo e na página Visão Geral.

Antes de trocar um aplicativo de um slot de implantação para produção, verifique se a produção é o slot de destino e se todas as configurações no slot de origem estão configuradas exatamente como você deseja que estejam em produção.

  1. Navegue até a página Slot de Implantação do aplicativo e selecione Trocar.

    Captura de tela que mostra as seleções para iniciar uma operação de troca no portal.

    A caixa de diálogo Trocar mostra as configurações selecionadas nos slots de origem e de destino que serão alteradas.

  2. Selecione os slots de origem e de destino desejados. Normalmente, o destino é o slot de produção. Selecione também as guias Alterações de slot na origem e Alterações de slot no destino e verifique se as alterações de configuração são as esperadas. Ao concluir, você pode trocar os slots imediatamente selecionando Iniciar Troca.

    Captura de tela que mostra as seleções para configurar e concluir uma troca no portal.

    Para ver como o slot de destino seria executado com as novas configurações antes da troca acontecer, não selecione Iniciar Troca. Siga as instruções de Trocar com a versão prévia posteriormente neste artigo.

  3. Selecione Fechar para fechar a caixa de diálogo.

Se você tiver algum problema, consulte Solucionar problemas de trocas mais adiante neste artigo.

Troca com versão prévia (troca de várias fases)

Antes de trocar o slot de destino para produção, valide se o aplicativo está executando com as configurações trocadas. O slot de origem também é ativado antes da conclusão da troca, o que é desejável para aplicativos críticos.

Quando você executa uma troca com pré-visualização, o Serviço de Aplicativo do Azure executa a mesma operação de troca, mas pausa após a primeira etapa. Neste momento você pode verificar o resultado no slot de preparo antes de concluir a troca.

Se você cancelar a troca, o Serviço de Aplicativo do Azure aplica novamente as configurações ao slot de origem.

Observação

Você não pode usar a troca com versão prévia quando a autenticação do site estiver habilitada em um dos slots.

  1. Siga as etapas da seção Trocar slots de implantação, mas selecione Executar troca com pré-visualização.

    A caixa de diálogo mostra como a configuração no slot de origem é alterada na primeira fase e como o slot de origem e de destino é alterado na segunda fase.

  2. Quando estiver pronto para iniciar a troca, selecione Iniciar Troca.

    Quando a primeira fase for concluída, a caixa de diálogo notificará você.

  3. Quando estiver pronto para concluir a troca pendente, selecione a ação de trocaConcluir a Troca Completa e, em seguida, selecione o botão Concluir a Troca Completa.

    Captura de tela que mostra como configurar uma troca com prévia no portal.

    Para cancelar uma troca pendente, selecione Cancelar Troca e, em seguida, selecione o botão Cancelar Troca .

  4. Quando terminar, selecione Fechar para fechar a caixa de diálogo.

Se você tiver algum problema, consulte Solucionar problemas de trocas mais adiante neste artigo.

Reverter a troca

Se ocorrerem erros no slot de destino (por exemplo, o slot de produção) após uma troca de slot, restaure os slots para seus estados de pré-troca alternando os mesmos dois slots imediatamente.

Configurar a troca automática

A troca automática otimiza cenários do Azure DevOps em que você quer implantar seu aplicativo continuamente sem inicialização a frio e sem tempo de inatividade para os clientes do aplicativo. Quando a troca automática é habilitada a partir de um slot para produção, sempre que você envia as alterações de código para esse slot, o Serviço de Aplicativo automaticamente troca o aplicativo para produção depois que ele é ativado no slot de origem.

Observação

Não há suporte para a troca automática em aplicativos Web no Linux e no Aplicativo Web para Contêineres.

Antes de configurar a troca automática para o slot de produção, cogite testá-la em um slot de destino de não produção.

  1. Navegue até a página de recursos do aplicativo. Selecione Implantação>Slots de implantação e selecione o slot de origem desejado.

  2. No menu à esquerda, selecione Configurações>Configuração>Configurações Gerais.

  3. Para habilitar a troca automática, selecione Ativado. Para o Slot de implantação de troca automática, selecione o slot de destino. Em seguida, selecione Salvar na barra de comandos.

    Captura de tela que mostra as seleções para configurar a troca automática no slot de produção no portal.

  4. Execute um push de código para o slot de origem. A troca automática ocorre após um curto período. A atualização é refletida na URL do slot de destino.

Se você tiver algum problema, consulte Solucionar problemas de trocas mais adiante neste artigo.

Especificar preparação personalizada

Alguns aplicativos podem exigir ações de preparação personalizada antes da troca. Você pode especificar essas ações personalizadas usando o applicationInitialization elemento de configuração em Web.config. A operação de troca aguarda a conclusão dessa preparação personalizada antes de trocar com o slot de destino. Aqui está um fragmento de exemplo Web.config :

<system.webServer>
    <applicationInitialization>
        <add initializationPage="/" hostName="[app hostname]" />
        <add initializationPage="/Home/About" hostName="[app hostname]" />
    </applicationInitialization>
</system.webServer>

Para obter mais informações sobre como personalizar o applicationInitialization elemento, consulte a postagem no blog Falhas mais comuns de troca de slot de implantação e como corrigi-las.

Você também pode personalizar o comportamento de aquecimento usando as seguintes configurações de aplicativo:

  • WEBSITE_SWAP_WARMUP_PING_PATH: o caminho para executar o ping através de HTTP para inicializar seu site. Adicione essa configuração de aplicativo especificando um caminho personalizado que começa com uma barra (“/”) como o valor. Um exemplo é /statuscheck. O valor padrão é /.
  • WEBSITE_SWAP_WARMUP_PING_STATUSES: códigos de resposta HTTP válidos para a operação de preparação. Adicione essa configuração de aplicativo com uma lista separada por vírgulas dos códigos HTTP. Um exemplo é 200,202. Se o código de status retornado não estiver na lista, as operações de aquecimento e troca serão interrompidas. Por padrão, todos os códigos de resposta são válidos.
  • WEBSITE_WARMUP_PATH: caminho relativo no site que deve ter seu ping executado sempre que o site for reiniciado (não apenas durante trocas de slot). Os valores de exemplo incluem /statuscheck ou o caminho raiz, /.

O elemento de configuração <applicationInitialization> faz parte de cada inicialização de aplicativo, enquanto as configurações de aplicativo de comportamento de preparação se aplicam somente a trocas de slot.

Se você tiver algum problema, consulte Solucionar problemas de trocas mais adiante neste artigo.

Monitorar uma troca

Se a operação de troca levar muito tempo para ser concluída, você poderá obter informações sobre a operação de troca no log de atividades.

  1. Na página de recursos do aplicativo no portal, no menu à esquerda, selecione Log de atividades.

  2. Uma operação de troca é exibida na consulta de log como Swap Web App Slots. Para exibir os detalhes, você pode expandi-lo e selecionar uma das suboperações ou erros.

Rotear o tráfego de produção automaticamente

Por padrão, todas as solicitações do cliente para a URL de produção do aplicativo são roteadas para o slot de produção. É possível rotear uma parte do tráfego para outro slot. Esse recurso será útil se você precisar de comentários do usuário para uma nova atualização, mas não estiver pronto para liberá-lo para produção.

  1. Acesse a página de recursos do aplicativo Web e selecione Implantação>Slots de implantação.

  2. Na coluna %de Tráfego do slot para o qual você deseja rotear, especifique uma porcentagem (entre 0 e 100) para representar a quantidade de tráfego total que você deseja rotear. Em seguida, selecione Salvar.

    Captura de tela que mostra as seleções do portal para rotear uma porcentagem de tráfego de solicitações para um slot de implementação.

Depois de salvar a configuração, o percentual especificado de clientes é roteado aleatoriamente para o slot de não produção.

Após rotear automaticamente um cliente para um slot específico, ele será fixado nesse slot por uma hora ou até que os cookies sejam excluídos. No navegador do cliente, você poderá ver em qual slot a sessão está fixada observando o cookie x-ms-routing-name nos cabeçalhos HTTP. Uma solicitação roteada para o slot de preparo contém o cookie x-ms-routing-name=staging. Uma solicitação roteada para o slot de produção tem o cookie x-ms-routing-name=self.

Rotear o tráfego de produção manualmente

Além do roteamento de tráfego automático, o Serviço de Aplicativo pode rotear solicitações para um slot específico. Essa opção é útil se você quiser fazer com que os usuários aceitem ou recusem a versão beta do aplicativo. Para rotear o tráfego de produção manualmente, use o parâmetro de consulta x-ms-routing-name.

Para permitir que os usuários recusem a versão beta do aplicativo, por exemplo, você pode colocar este link na sua página Web:

<a href="<webappname>.azurewebsites.net/?x-ms-routing-name=self">Go back to production app</a>

A cadeia de caracteres x-ms-routing-name=self especifica o local de produção. Depois que o navegador do cliente acessa o link, ele é redirecionado para o slot de produção. Cada solicitação subsequente tem o x-ms-routing-name=self cookie que fixa a sessão ao slot de produção.

Para permitir que os usuários aceitem o aplicativo beta, defina o mesmo parâmetro de consulta como o nome do slot de não produção. Veja um exemplo:

<webappname>.azurewebsites.net/?x-ms-routing-name=staging

Por padrão, novos slots têm uma regra de roteamento de 0%, mostrada em cinza. Ao definir esse valor explicitamente como 0% (mostrado em texto preto), os usuários poderão acessar o slot de preparo manualmente usando o parâmetro de consulta x-ms-routing-name. Eles não serão roteados para o slot automaticamente porque a porcentagem de roteamento está definida como 0. Essa configuração é um cenário avançado em que se pode ocultar o slot de preparo do público, enquanto as equipes internas testam as alterações no slot.

Excluir um slot

  1. Pesquise e selecione o aplicativo.

  2. Selecione Implantação>Slots de implantação>Slot a ser excluído>Visão geral. O tipo de aplicativo aparece como Serviço de Aplicativo (Slot) para lembrá-lo de que você está exibindo um slot de implantação.

  3. Interrompa o slot e configure o tráfego no slot para zero.

  4. Na barra de comandos, selecione Excluir.

Captura de tela que mostra as seleções para excluir um slot de implantação no portal.

Automatizar com modelos do Resource Manager

Os modelos do Azure Resource Manager são arquivos JSON declarativos para automatizar a implantação e a configuração de recursos do Azure. Para trocar slots usando modelos do Resource Manager, defina duas propriedades nos recursos Microsoft.Web/sites/slots e Microsoft.Web/sites.

  • buildVersion: uma propriedade de cadeia de caracteres que representa a versão atual do aplicativo implantado no slot. Por exemplo: v1, 1.0.0.1 ou 2019-09-20T11:53:25.2887393-07:00
  • targetBuildVersion: uma propriedade de cadeia de caracteres que especifica qual buildVersion valor o slot deve ter. Se o targetBuildVersion valor não for igual ao valor atual buildVersion , ele disparará a operação de troca localizando o slot com o valor especificado buildVersion .

Exemplo de modelo do Resource Manager

O modelo do Resource Manager a seguir troca dois slots ao alterar o valor do buildVersion no slot staging e definir o valor do targetBuildVersion no slot de produção. Você deve ter um slot chamado staging.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "my_site_name": {
            "defaultValue": "SwapAPIDemo",
            "type": "String"
        },
        "sites_buildVersion": {
            "defaultValue": "v1",
            "type": "String"
        }
    },
    "resources": [
        {
            "type": "Microsoft.Web/sites/slots",
            "apiVersion": "2018-02-01",
            "name": "[concat(parameters('my_site_name'), '/staging')]",
            "location": "East US",
            "kind": "app",
            "properties": {
                "buildVersion": "[parameters('sites_buildVersion')]"
            }
        },
        {
            "type": "Microsoft.Web/sites",
            "apiVersion": "2018-02-01",
            "name": "[parameters('my_site_name')]",
            "location": "East US",
            "kind": "app",
            "dependsOn": [
                "[resourceId('Microsoft.Web/sites/slots', parameters('my_site_name'), 'staging')]"
            ],
            "properties": {
                "targetBuildVersion": "[parameters('sites_buildVersion')]"
            }
        }        
    ]
}

Esse modelo do Resource Manager é idempotente. Você pode executá-lo repetidamente e produzir o mesmo estado dos slots. Sem nenhuma alteração no modelo, as execuções seguintes do mesmo modelo não disparam nenhuma troca de slot porque os slots já estão no estado desejado.

Solucionar problemas de trocas

Se ocorrer algum erro durante uma troca de slot, o erro será exibido em D:\home\LogFiles\eventlog.xml. Também é registrado no log de erros específico do aplicativo.

Aqui estão alguns erros comuns de troca:

  • Uma solicitação HTTP para a raiz do aplicativo é cronometrada. A operação de troca aguarda 90 segundos para cada solicitação HTTP e tenta novamente até cinco vezes. Se todas as tentativas atingirem o tempo limite, a operação de troca será pausada.

  • A inicialização do cache local pode falhar quando o conteúdo do aplicativo exceder a cota de disco local especificada para o cache local. Para obter mais informações, consulte a visão geral do cache local do Serviço de Aplicativo do Azure.

  • Durante uma operação de atualização de site, pode ocorrer o seguinte erro: "O slot não pode ser alterado porque suas configurações foram preparadas para troca". Esse erro poderá ocorrer se a primeira fase em uma troca de várias fases for concluída, mas a segunda fase não tiver acontecido. Também poderá ocorrer se uma troca falhar. Há duas maneiras de resolver esse problema:

    • Cancelar a operação de troca que redefinirá o site de volta ao estado antigo.
    • Conclua a operação de troca, que atualiza o site para o novo estado desejado.

    Para saber como cancelar ou concluir a operação de troca, consulte Swap com versão prévia (troca de várias fases) anteriormente neste artigo.

  • Durante a preparação personalizada, as solicitações HTTP são feitas internamente, sem passar por URL externa. Eles podem falhar com determinadas regras de reescrita de URL em Web.config. Por exemplo, regras para redirecionar nomes de domínio ou impor HTTPS podem impedir que requisições de inicialização alcancem o código do aplicativo. Para contornar esse problema, modifique as regras de reescrita adicionando as duas seguintes condições:

    <conditions>
      <add input="{WARMUP_REQUEST}" pattern="1" negate="true" />
      <add input="{REMOTE_ADDR}" pattern="^100?\." negate="true" />
      ...
    </conditions>
    
  • Sem uma preparação personalizada, as regras de reescrita de URL podem bloquear solicitações HTTP. Para contornar esse problema, modifique suas regras de reescrita adicionando a seguinte condição:

    <conditions>
      <add input="{REMOTE_ADDR}" pattern="^100?\." negate="true" />
      ...
    </conditions>
    
  • Após as trocas de slot, o aplicativo poderá reinicializar de forma inesperada. As reinicializações ocorrem porque, após uma troca, a configuração de associação nome do host fica fora de sincronia. Essa situação por si só não causa reinicializações. No entanto, certos eventos de armazenamento subjacentes, como failovers de volume de armazenamento, podem detectar essas discrepâncias e forçar a reinicialização de todos os processos de trabalho.

    Para diminuir essas reinicializações, defina a configuração de aplicativo WEBSITE_ADD_SITENAME_BINDINGS_IN_APPHOST_CONFIG=1 em todos os slots. Porém, essa configuração de aplicativo não funciona com aplicativos WCF (Windows Communication Foundation).

Próxima etapa