Problemas comuns que fazem com que as funções (clássicas) do Serviço de Nuvem do Azure sejam recicladas
Importante
Os Serviços na Nuvem (clássicos) foram preteridos para todos os clientes a partir de 1º de setembro de 2024. Todas as implantações em execução existentes serão interrompidas e encerradas pela Microsoft e os dados serão perdidos permanentemente a partir de outubro de 2024. Novas implantações devem usar o novo modelo de implantação baseado no Azure Resource Manager Serviços de Nuvem do Azure (suporte estendido).
Este artigo discute algumas das causas comuns de problemas de implantação e fornece dicas de solução de problemas para ajudá-lo a resolver esses problemas. Uma indicação de que existe um problema com um aplicativo é quando a instância de função falha ao iniciar ou alterna entre os estados inicializado, ocupado e parado.
Se o seu problema do Azure não for resolvido neste artigo, visite os fóruns do Azure em Microsoft Q & A e Stack Overflow. Você pode postar seu problema nesses fóruns ou postar para @AzureSupport no Twitter. Você também pode enviar uma solicitação de suporte do Azure. Para enviar uma solicitação de suporte, na página de suporte do Azure, selecione Obter suporte.
Dependências de tempo em falta
Se uma função em seu aplicativo depender de qualquer assembly que não faça parte do .NET Framework ou da biblioteca gerenciada do Azure, você deverá incluir explicitamente esse assembly no pacote do aplicativo. Lembre-se de que outras estruturas da Microsoft não estão disponíveis no Azure por padrão. Se a sua função depender de um desses frameworks, tem de adicionar essas assemblagens ao pacote de aplicação.
Antes de compilar e empacotar seu aplicativo, verifique se as seguintes instruções são verdadeiras:
- Se estiver usando o Visual Studio, verifique se a propriedade Copy Local está definida como True para cada assembly referenciado em seu projeto que não faz parte do SDK do Azure ou do .NET Framework.
- Verifique se o arquivo web.config não faz referência a nenhum assembly não utilizado no elemento de compilação.
- A Ação de compilação de cada arquivo .cshtml é definida como Conteúdo. Essa configuração garante que os arquivos apareçam corretamente no pacote e permite que outros arquivos referenciados apareçam no pacote.
A assemblagem visa a plataforma errada
O Azure é um ambiente de 64 bits. Portanto, assemblies .NET compilados para um destino de 32 bits não são compatíveis com o Azure.
A função gera exceções não tratadas ao inicializar ou parar
Quaisquer exceções lançadas pelos métodos da classe RoleEntryPoint, que inclui os métodos OnStart, OnStop e Run, são exceções sem tratamento. Se ocorrer uma exceção não tratada em um desses métodos, a função será reciclada. Se a função estiver reciclando repetidamente, ela pode estar lançando uma exceção não tratada cada vez que tenta iniciar.
A função é devolvida a partir do método Run
O método Run destina-se a ser executado indefinidamente. Se o código substituir o método Run , ele deverá permanecer indefinidamente. Se o método Run retornar, a função será reciclada.
Configuração incorreta de DiagnosticsConnectionString
Se o aplicativo usa o Diagnóstico do Azure, seu arquivo de configuração de serviço deve especificar a definição de DiagnosticsConnectionString
configuração. Essa configuração deve especificar uma conexão HTTPS com sua conta de armazenamento no Azure.
Para garantir que sua DiagnosticsConnectionString
configuração esteja correta antes de implantar seu pacote de aplicativo no Azure, verifique se as seguintes instruções são verdadeiras:
- A
DiagnosticsConnectionString
configuração aponta para uma conta de armazenamento válida no Azure.
Por padrão, essa configuração aponta para a conta de armazenamento emulada, portanto, você deve alterar explicitamente essa configuração antes de implantar o pacote do aplicativo. Se você não alterar essa configuração, uma exceção será lançada quando a instância de função tentar iniciar o monitor de diagnóstico. Esse evento pode fazer com que a instância de função seja reciclada indefinidamente. - A cadeia de conexão é especificada no seguinte formato. (O protocolo deve ser especificado como HTTPS.) Substitua MyAccountName pelo nome da sua conta de armazenamento e MyAccountKey pela sua chave de acesso:
DefaultEndpointsProtocol=https;AccountName=MyAccountName;AccountKey=MyAccountKey
Se você estiver desenvolvendo seu aplicativo usando as Ferramentas do Azure para Microsoft Visual Studio, poderá usar as páginas de propriedades para definir esse valor.
O certificado exportado não inclui chave privada
Para executar uma função Web em TLS (Transport Layer Security), você deve garantir que o certificado de gerenciamento exportado inclua a chave privada. Se você usar o Gerenciador de Certificados do Windows para exportar o certificado, selecione Sim para a opção Exportar a chave privada. O certificado deve ser exportado no formato .pfx, que é o único formato suportado atualmente.
Próximos passos
Veja mais artigos de solução de problemas para serviços de nuvem.
Veja mais cenários de reciclagem de papéis na série de blogs de Kevin Williamson.