Domyślny rozmiar folderu TEMP jest zbyt mały w roli sieci Web/procesu roboczego usługi w chmurze (klasycznej)
Ważne
Usługi Cloud Services (wersja klasyczna) są teraz przestarzałe dla wszystkich klientów od 1 września 2024 r. Wszystkie istniejące uruchomione wdrożenia zostaną zatrzymane i zamknięte przez firmę Microsoft, a dane zostaną trwale utracone od października 2024 r. Nowe wdrożenia powinny używać nowego modelu wdrażania opartego na usłudze Azure Resource Manager w usługach Azure Cloud Services (wsparcie dodatkowe).
Domyślny katalog tymczasowy procesu roboczego usługi w chmurze lub roli sieci Web ma maksymalny rozmiar 100 MB, co może stać się pełne w pewnym momencie. W tym artykule opisano, jak uniknąć braku miejsca dla katalogu tymczasowego.
Jeśli problem z platformą Azure nie został rozwiązany w tym artykule, odwiedź fora platformy Azure w witrynach Microsoft Q & A i Stack Overflow. Możesz opublikować swój problem na tych forach lub opublikować go na @AzureSupport na Twitterze. Możesz również przesłać żądanie pomoc techniczna platformy Azure. Aby przesłać wniosek o pomoc techniczną, na stronie pomoc techniczna platformy Azure wybierz pozycję Uzyskaj pomoc techniczną.
Dlaczego zabrakło miejsca?
Standardowe zmienne środowiskowe systemu Windows TEMP i TMP są dostępne dla kodu uruchomionego w aplikacji. Zarówno TEMP, jak i TMP wskazują pojedynczy katalog o maksymalnym rozmiarze 100 MB. Wszystkie dane przechowywane w tym katalogu nie są utrwalane w całym cyklu życia usługi w chmurze. Jeśli wystąpienia ról w usłudze w chmurze zostaną poddane recyklingu, katalog zostanie oczyszczony.
Sugestia dotycząca rozwiązania problemu
Zaimplementuj jedną z następujących alternatyw:
- Skonfiguruj zasób magazynu lokalnego i uzyskaj do niego dostęp bezpośrednio zamiast przy użyciu protokołu TEMP lub TMP. Aby uzyskać dostęp do zasobu magazynu lokalnego z kodu uruchomionego w aplikacji, wywołaj metodę RoleEnvironment.GetLocalResource .
- Skonfiguruj zasób magazynu lokalnego i wskaż katalogi TEMP i TMP, aby wskazywały ścieżkę zasobu magazynu lokalnego. Ta modyfikacja powinna być wykonywana w metodzie RoleEntryPoint.OnStart .
Poniższy przykład kodu pokazuje, jak zmodyfikować katalogi docelowe temp i TMP z poziomu metody 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();
}
}
}
Następne kroki
Przeczytaj blog z opisem Jak zwiększyć rozmiar roli internetowej platformy Azure ASP.NET folder tymczasowy.
Zobacz więcej artykułów dotyczących rozwiązywania problemów dotyczących usług w chmurze.
Aby dowiedzieć się, jak rozwiązywać problemy z rolą usługi w chmurze przy użyciu danych diagnostycznych komputerów paaS platformy Azure, zobacz serię blogów Kevina Williamsona.