Share via


A .NET telepítése Az Azure Cloud Services (klasszikus) szerepkörökre

Fontos

Cloud Services (klasszikus) mostantól elavult az új ügyfelek számára, és 2024. augusztus 31-én megszűnik minden ügyfél számára. Az új üzemelő példányoknak az új Azure Resource Manager-alapú Azure Cloud Services (kiterjesztett támogatás) üzemi modellt kell használniuk.

Ez a cikk az Azure-vendég operációs rendszerrel nem rendelkező .NET-keretrendszer verzióinak telepítését ismerteti. A vendég operációs rendszeren a .NET használatával konfigurálhatja a felhőszolgáltatás webes és feldolgozói szerepköreit.

Telepítheti például a .NET-keretrendszer 4.6.2-es verzióját a Vendég operációs rendszer 4. családjára, amely nem tartalmaz .NET-keretrendszer 4.6-os kiadást. (A vendég operációs rendszer 5-ös családja .NET-keretrendszer 4.6-os verzióval rendelkezik.) Az Azure-vendég operációs rendszer kiadásaival kapcsolatos legfrissebb információkért tekintse meg az Azure Vendég operációs rendszer kiadási híreit.

Fontos

Az Azure SDK 2.9 korlátozást tartalmaz a .NET-keretrendszer 4.6-os vagy korábbi verziójának a vendég operációs rendszer 4.6-os vagy korábbi verzióján való üzembe helyezésére. A korlátozás javítása a azure-cloud-services-files GitHub-adattárban érhető el.

A .NET webes és feldolgozói szerepkörökre való telepítéséhez vegye fel a .NET-webtelepítőt a felhőszolgáltatási projektbe. Indítsa el a telepítőt a szerepkör indítási feladatainak részeként.

A .NET-telepítő hozzáadása a projekthez

A .NET-keretrendszer webtelepítőjének letöltéséhez válassza ki a telepíteni kívánt verziót:

A webes szerepkör telepítőjének hozzáadása:

  1. A Megoldáskezelő felhőszolgáltatási projekt szerepkörei területén kattintson a jobb gombbal a webes szerepkörre, és válassza azÚj mappahozzáadása> lehetőséget. Hozzon létre egy bin nevű mappát.
  2. Kattintson a jobb gombbal a bin mappára, és válassza aMeglévő elemhozzáadása> lehetőséget. Válassza ki a .NET-telepítőt, és adja hozzá a bin mappához.

A feldolgozói szerepkör telepítőjének hozzáadása:

  • Kattintson a jobb gombbal a feldolgozói szerepkörre, és válassza aMeglévő elemhozzáadása> lehetőséget. Válassza ki a .NET-telepítőt, és adja hozzá a szerepkörhöz.

Ha a fájlokat így adja hozzá a szerepkör tartalommappájához, a rendszer automatikusan hozzáadja őket a felhőszolgáltatás-csomaghoz. A fájlokat ezután a rendszer konzisztens helyen helyezi üzembe a virtuális gépen. Ismételje meg ezt a folyamatot a felhőszolgáltatás minden webes és feldolgozói szerepköre esetében, hogy minden szerepkör rendelkezzen a telepítő másolatával.

Megjegyzés

A .NET-keretrendszer 4.6.2-t akkor is telepítenie kell a felhőszolgáltatás-szerepkörre, ha az alkalmazás a 4.6-os .NET-keretrendszer célozza meg. A vendég operációs rendszer tartalmazza a Tudásbázis frissítési 3098779 és a frissítési 3097997. A .NET-alkalmazások futtatásakor problémák léphetnek fel, ha .NET-keretrendszer 4.6 telepítve van a Tudásbázis frissítéseire. A problémák elkerülése érdekében telepítse a .NET-keretrendszer 4.6.2-es verzióját a 4.6-os verzió helyett. További információt a Tudásbázis 3118750 és 4340191című cikkben talál.

Szerepkör tartalma telepítőfájlokkal

Indítási feladatok definiálása a szerepkörökhöz

Indítási feladatokkal műveleteket hajthat végre a szerepkörök elindítása előtt. A .NET-keretrendszer az indítási feladat részeként történő telepítése biztosítja, hogy a keretrendszer telepítve legyen az alkalmazáskódok futtatása előtt. Az indítási feladatokkal kapcsolatos további információkért lásd: Indítási feladatok futtatása az Azure-ban.

  1. Adja hozzá a következő tartalmat a ServiceDefinition.csdef fájlhoz a WebRole vagy a WorkerRole csomópont alatt az összes szerepkörhöz:

    <LocalResources>
      <LocalStorage name="NETFXInstall" sizeInMB="1024" cleanOnRoleRecycle="false" />
    </LocalResources>    
    <Startup>
      <Task commandLine="install.cmd" executionContext="elevated" taskType="simple">
        <Environment>
          <Variable name="PathToNETFXInstall">
            <RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/LocalResources/LocalResource[@name='NETFXInstall']/@path" />
          </Variable>
          <Variable name="ComputeEmulatorRunning">
            <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
          </Variable>
        </Environment>
      </Task>
    </Startup>
    

    Az előző konfiguráció rendszergazdai jogosultságokkal futtatja a konzolparancsot install.cmd a .NET-keretrendszer telepítéséhez. A konfiguráció egy NETFXInstall nevű LocalStorage elemet is létrehoz. Az indítási szkript beállítja az ideiglenes mappát, hogy ezt a helyi tárolási erőforrást használja.

    Fontos

    A keretrendszer megfelelő telepítése érdekében állítsa az erőforrás méretét legalább 1024 MB-ra.

    Az indítási feladatokkal kapcsolatos további információkért lásd: Gyakori Azure-Cloud Services indítási feladatok.

  2. Hozzon létre egy install.cmd nevű fájlt, és adja hozzá a következő telepítési szkriptet a fájlhoz.

    A szkript a beállításjegyzék lekérdezésével ellenőrzi, hogy a .NET-keretrendszer megadott verziója már telepítve van-e a gépen. Ha a .NET-keretrendszer verzió nincs telepítve, akkor megnyílik a .NET-keretrendszer webtelepítő. A problémák elhárításának elősegítése érdekében a szkript naplózza a startuptasklog-(aktuális dátum és idő).txt, amely az InstallLogs helyi tárolóban van tárolva.

    Fontos

    Az install.cmd fájl létrehozásához használjon egy alapszintű szövegszerkesztőt, például a Windows Jegyzettömbt. Ha a Visual Studióval hoz létre egy szövegfájlt, és a kiterjesztést .cmd-re módosítja, a fájl továbbra is tartalmazhat UTF-8 bájtsorrendjelet. Ez a jel hibát okozhat a szkript első sorának futtatásakor. A hiba elkerülése érdekében a szkript első sorát rem utasítássá kell tenni, amelyet kihagyhat a bájtsorrend feldolgozása.

    REM Set the value of netfx to install appropriate .NET Framework. 
    REM ***** To install .NET 4.5.2 set the variable netfx to "NDP452" ***** https://go.microsoft.com/fwlink/?LinkId=397707
    REM ***** To install .NET 4.6 set the variable netfx to "NDP46" ***** https://go.microsoft.com/fwlink/?LinkId=528222
    REM ***** To install .NET 4.6.1 set the variable netfx to "NDP461" ***** https://go.microsoft.com/fwlink/?LinkId=671729
    REM ***** To install .NET 4.6.2 set the variable netfx to "NDP462" ***** https://go.microsoft.com/fwlink/?linkid=780596
    REM ***** To install .NET 4.7 set the variable netfx to "NDP47" ***** https://go.microsoft.com/fwlink/?LinkId=825298
    REM ***** To install .NET 4.7.1 set the variable netfx to "NDP471" ***** https://go.microsoft.com/fwlink/?LinkId=852095
    REM ***** To install .NET 4.7.2 set the variable netfx to "NDP472" ***** https://go.microsoft.com/fwlink/?LinkId=863262
    REM ***** To install .NET 4.8 set the variable netfx to "NDP48" ***** https://dotnet.microsoft.com/download/thank-you/net48
    REM ***** To install .NET 4.8.1 set the variable netfx to "NDP481" ***** https://go.microsoft.com/fwlink/?linkid=2215256 
    set netfx="NDP481"
    
    REM ***** Set script start timestamp ****
    set timehour=%time:~0,2%
    set timestamp=%date:~-4,4%%date:~-10,2%%date:~-7,2%-%timehour: =0%%time:~3,2%
    set "log=install.cmd started %timestamp%."
    
    REM ***** Exit script if running in Emulator *****
    if "%ComputeEmulatorRunning%"=="true" goto exit
    
    REM ***** Needed to correctly install .NET 4.6.1, otherwise you may see an out of disk space error *****
    set TMP=%PathToNETFXInstall%
    set TEMP=%PathToNETFXInstall%
    
    REM ***** Setup .NET filenames and registry keys *****
    if %netfx%=="NDP481" goto NDP481
    if %netfx%=="NDP48" goto NDP48
    if %netfx%=="NDP472" goto NDP472
    if %netfx%=="NDP471" goto NDP471
    if %netfx%=="NDP47" goto NDP47
    if %netfx%=="NDP462" goto NDP462
    if %netfx%=="NDP461" goto NDP461
    if %netfx%=="NDP46" goto NDP46
    
    set "netfxinstallfile=NDP452-KB2901954-Web.exe"
    set netfxregkey="0x5cbf5"
    set netfxUrl="https://go.microsoft.com/fwlink/?LinkId=397707"
    goto logtimestamp
    
    :NDP46
    set "netfxinstallfile=NDP46-KB3045560-Web.exe"
    set netfxregkey="0x6004f"
    set netfxUrl="https://go.microsoft.com/fwlink/?LinkId=528222"
    goto logtimestamp
    
    :NDP461
    set "netfxinstallfile=NDP461-KB3102438-Web.exe"
    set netfxregkey="0x6040e"
    set netfxUrl="https://go.microsoft.com/fwlink/?LinkId=671729"
    goto logtimestamp
    
    :NDP462
    set "netfxinstallfile=NDP462-KB3151802-Web.exe"
    set netfxregkey="0x60632"
    set netfxUrl="https://go.microsoft.com/fwlink/?linkid=780596"
    goto logtimestamp
    
    :NDP47
    set "netfxinstallfile=NDP47-KB3186500-Web.exe"
    set netfxregkey="0x707FE"
    set netfxUrl="https://go.microsoft.com/fwlink/?LinkId=825298"
    goto logtimestamp
    
    :NDP471
    set "netfxinstallfile=NDP471-KB4033344-Web.exe"
    set netfxregkey="0x709fc"
    set netfxUrl="https://go.microsoft.com/fwlink/?LinkId=852095"
    goto logtimestamp
    
    :NDP472
    set "netfxinstallfile=NDP472-KB4054531-Web.exe"
    set netfxregkey="0x70BF0"
    set netfxUrl="https://go.microsoft.com/fwlink/?LinkId=863262"
    goto logtimestamp
    
    :NDP48
    set "netfxinstallfile=NDP48-Web.exe"
    set netfxregkey="0x80EA8"
    set netfxUrl="https://dotnet.microsoft.com/download/thank-you/net48"
    goto logtimestamp
    
    :NDP481
    set "netfxinstallfile=NDP481-Web.exe"
    set netfxregkey="0x82348"
    set netfxUrl="https://go.microsoft.com/fwlink/?linkid=2215256"
    goto logtimestamp
    
    :logtimestamp
    REM ***** Setup LogFile with timestamp *****
    md "%PathToNETFXInstall%\log"
    set startuptasklog="%PathToNETFXInstall%log\startuptasklog-%timestamp%.txt"
    set netfxinstallerlog="%PathToNETFXInstall%log\NetFXInstallerLog-%timestamp%"
    echo %log% >> %startuptasklog%
    echo Logfile generated at: %startuptasklog% >> %startuptasklog%
    echo TMP set to: %TMP% >> %startuptasklog%
    echo TEMP set to: %TEMP% >> %startuptasklog%
    
    REM ***** Check if .NET is installed *****
    echo Checking if .NET (%netfx%) is installed >> %startuptasklog%
    set /A netfxregkeydecimal=%netfxregkey%
    set foundkey=0
    FOR /F "usebackq skip=2 tokens=1,2*" %%A in (`reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" /v Release 2^>nul`) do @set /A foundkey=%%C
    echo Minimum required key: %netfxregkeydecimal% -- found key: %foundkey% >> %startuptasklog%
    if %foundkey% GEQ %netfxregkeydecimal% goto installed
    
    REM ***** Downloading .NET Framework Setup *****
    set retryCount=0
    set maxRetry=3
    set delayInSeconds=60
    echo Downloading .NET Framework %netfx% setup with commandline: powershell -Command "Invoke-WebRequest %netfxUrl% -OutFile %~dp0%netfxinstallfile%" >> %startuptasklog%
    goto loop
    
    :loop
    if %retryCount% NEQ 0 echo %date% %time% : Waiting %delayInSeconds% seconds to retry >> %startuptasklog%
    if %retryCount% NEQ 0 (powershell -Command "Start-Sleep -Seconds %delayInSeconds%")
    set /a retryCount=%retryCount%+1
    echo %date% %time% : Try downloading... [%retryCount% of %maxRetry%] >> %startuptasklog%
    powershell -Command "Invoke-WebRequest %netfxUrl% -OutFile %~dp0%netfxinstallfile%"
    if %ERRORLEVEL% NEQ 0 if %retryCount% NEQ %maxRetry% goto loop
    if %ERRORLEVEL% NEQ 0 if %retryCount%== %maxRetry% echo Taking existing file to install since error occurred while downloading .NET framework %netfx% setup from  %netfxUrl%. >> %startuptasklog%
    if %ERRORLEVEL%== 0 echo %date% %time% : Successfully downloaded .NET framework %netfx% setup file. >> %startuptasklog%
    goto install
    
    :install
    REM ***** Installing .NET *****
    echo Installing .NET with commandline: start /wait %~dp0%netfxinstallfile% /q /serialdownload /log %netfxinstallerlog%  /chainingpackage "CloudService Startup Task" >> %startuptasklog%
    start /wait %~dp0%netfxinstallfile% /q /serialdownload /log %netfxinstallerlog% /chainingpackage "CloudService Startup Task" >> %startuptasklog% 2>>&1
    if %ERRORLEVEL%== 0 goto installed
        echo .NET installer exited with code %ERRORLEVEL% >> %startuptasklog%    
        if %ERRORLEVEL%== 3010 goto restart
        if %ERRORLEVEL%== 1641 goto restart
        echo .NET (%netfx%) install failed with Error Code %ERRORLEVEL%. Further logs can be found in %netfxinstallerlog% >> %startuptasklog%
        goto exit
    
    :restart
    echo Restarting to complete .NET (%netfx%) installation >> %startuptasklog%
    shutdown.exe /r /t 5 /c "Installed .NET framework" /f /d p:2:4
    
    :installed
    echo .NET (%netfx%) is installed >> %startuptasklog%
    
    :end
    echo install.cmd completed: %date:~-4,4%%date:~-10,2%%date:~-7,2%-%timehour: =0%%time:~3,2% >> %startuptasklog%
    
    :exit
    EXIT /B 0
    
  3. Adja hozzá az install.cmd fájlt az egyes szerepkörökhöz a jelen témakör korábbi részében ismertetett MegoldáskezelőMeglévő elemhozzáadása> parancsával.

    A lépés befejezése után minden szerepkörnek rendelkeznie kell a .NET telepítőfájllal és az install.cmd fájllal.

    Szerepkör tartalma az összes fájllal

A diagnosztika konfigurálása az indítási naplók Blob Storage-ba való átviteléhez

A telepítési problémák elhárításának egyszerűsítése érdekében konfigurálhatja Azure Diagnostics, hogy az indítási szkript vagy a .NET-telepítő által létrehozott naplófájlokat átvihesse az Azure Blob Storage-ba. Ezzel a módszerrel úgy tekintheti meg a naplókat, hogy letölti a naplófájlokat a Blob Storage-ból ahelyett, hogy távoli asztalt kellene használnia a szerepkörbe.

A Diagnosztika konfigurálásához nyissa meg a diagnostics.wadcfgx fájlt, és adja hozzá a következő tartalmat a Címtárak csomópont alatt:

<DataSources>
 <DirectoryConfiguration containerName="netfx-install">
  <LocalResource name="NETFXInstall" relativePath="log"/>
 </DirectoryConfiguration>
</DataSources>

Ez az XML úgy konfigurálja a Diagnostics szolgáltatást, hogy a NETFXInstall erőforrás naplókönyvtárában lévő fájlokat átvihesse a netfx-install blobtároló Diagnosztikai tárfiókjába.

A felhőszolgáltatás üzembe helyezése

A felhőszolgáltatás üzembe helyezésekor az indítási feladatok telepítik a .NET-keretrendszer, ha még nincs telepítve. A felhőszolgáltatás-szerepkörök foglalt állapotban vannak a keretrendszer telepítése közben. Ha a keretrendszer telepítése újraindítást igényel, a szolgáltatásszerepkörök is újraindulhatnak.

További források