Udostępnij za pośrednictwem


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.