O tamanho da pasta TEMP padrão é muito pequeno em uma função de serviço de nuvem (clássico) de Web/trabalho
Importante
Os Serviços de Nuvem (clássicos) estão obsoletos para todos os clientes desde 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. As novas implantações devem usar o novo modelo de implantação baseado no Azure Resource Manager Serviços de Nuvem do Azure (suporte estendido) .
O diretório temporário padrão de uma função de serviço de nuvem Web ou trabalho tem um tamanho máximo de 100 MB, o que pode ficar completo em algum momento. Este artigo descreve como evitar a falta de espaço para o diretório temporário.
Caso o seu problema do Azure não seja abordado neste artigo, visite os fóruns do Azure no Microsoft Q&A e no Stack Overflow. Você pode postar seu problema nesses fóruns ou enviar 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 Suporte do Azure, selecione Obter suporte.
Por que eu fiquei sem espaço?
As variáveis de ambiente TEMP e TMP padrão do Windows estão disponíveis no código em execução em seu aplicativo. TEMP e TMP apontam para um único diretório com um tamanho máximo de 100 MB. Os dados armazenados nesse diretório não são persistidos ao longo do ciclo de vida do serviço de nuvem. Se as instâncias de função em um serviço de nuvem forem recicladas, o diretório será limpo.
Sugestão para corrigir o problema
Implemente uma das alternativas a seguir:
- Configure um recurso de armazenamento local e acesse-o diretamente, em vez de usar TEMP ou TMP. Para acessar um recurso de armazenamento local no código em execução dentro de seu aplicativo, chame o método RoleEnvironment.GetLocalResource .
- Configure um recurso de armazenamento local e aponte os diretórios TEMP e TMP para apontar para o caminho do recurso de armazenamento local. Essa modificação deve ser executada dentro do método RoleEntryPoint.OnStart .
O exemplo de código a seguir mostra como modificar os diretórios de destino para TEMP e TMP de dentro do método OnStart:
using System;
using Microsoft.WindowsAzure.ServiceRuntime;
namespace WorkerRole1
{
public class WorkerRole : RoleEntryPoint
{
public override bool OnStart()
{
// The local resource declaration must have been added to the
// service definition file for the role named WorkerRole1:
//
// <LocalResources>
// <LocalStorage name="CustomTempLocalStore"
// cleanOnRoleRecycle="false"
// sizeInMB="1024" />
// </LocalResources>
string customTempLocalResourcePath =
RoleEnvironment.GetLocalResource("CustomTempLocalStore").RootPath;
Environment.SetEnvironmentVariable("TMP", customTempLocalResourcePath);
Environment.SetEnvironmentVariable("TEMP", customTempLocalResourcePath);
// The rest of your startup code goes here…
return base.OnStart();
}
}
}
Próximas etapas
Leia um blog que descreve Como aumentar o tamanho da Pasta Temporária do ASP.NET da Função Web do Azure.
Confira mais artigos sobre solução de problemas para serviços de nuvem.
Para saber como solucionar os problemas das funções do serviço de nuvem usando os dados de diagnóstico do computador Azure PaaS, veja a série de blogs de Kevin Williamson.