A .NET telepítése az Azure Cloud Services (klasszikus) szerepkörökre
Fontos
A Cloud Services (klasszikus) 2024. szeptember 1-étől minden ügyfél számára elavult. A Microsoft leállítja és leállítja a meglévő üzemelő példányokat, és 2024 októberétől folyamatosan elvesznek az adatok. Az új üzemelő példányoknak az Azure Cloud Services új Azure Resource Manager-alapú üzemi modelljét (kiterjesztett támogatás) kell használniuk.
Ez a cikk azt ismerteti, hogyan telepíthet olyan .NET-keretrendszer verziókat, amelyek nem az Azure Guest OS-hez érkeznek. 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-es családjára, amely nem jár a .NET-keretrendszer 4.6-os verziójának kiadásával. (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ásával kapcsolatos legfrissebb információkért tekintse meg az Azure Guest OS kiadási híreit.
Fontos
Az Azure SDK 2.9 korlátozást tartalmaz a 4.6-os .NET-keretrendszer 4.6-os vagy korábbi vendég operációsrendszer-családon való üzembe helyezésére. A korlátozás javítása a azure-cloud-services-files
GitHub-adattárban érhető el.
Ha a webes és feldolgozói szerepkörökre szeretné telepíteni a .NET-et, a felhőszolgáltatás-projekt részeként vegye fel a .NET-webtelepítőt. 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:
- .NET-keretrendszer 4.8.1 webtelepítő
- .NET-keretrendszer 4.8 webtelepítő
- .NET-keretrendszer 4.7.2 webtelepítő
- .NET-keretrendszer 4.6.2 webtelepítő
Webszerepkör telepítőjének hozzáadása:
- A Megoldáskezelő felhőszolgáltatás-projekt szerepkörei területén kattintson a jobb gombbal a webes szerepkörre, és válassza az Új mappa hozzáadása>lehetőséget. Hozzon létre egy bin nevű mappát.
- Kattintson a jobb gombbal a bin mappára, és válassza a Meglévő elem hozzáadása lehetőséget>. Válassza ki a .NET-telepítőt, és adja hozzá a tároló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 a Meglévő elem hozzáadása lehetőséget>. Válassza ki a .NET-telepítőt, és adja hozzá a szerepkörhöz.
Ha ilyen módon ad hozzá fájlokat a szerepkör tartalommappájához, azok automatikusan hozzáadódnak a felhőszolgáltatás-csomaghoz. A fájlok ezután a virtuális gép konzisztens helyére lesznek üzembe helyezve. Ismételje meg ezt a folyamatot a felhőszolgáltatás minden webes és feldolgozói szerepköréhez, hogy minden szerepkör rendelkezik a telepítő másolatával.
Feljegyzés
A .NET-keretrendszer 4.6.2-t akkor is telepítenie kell a felhőszolgáltatás-szerepkörére, 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 3097997 frissítését. 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 4340191 című cikkében talál.
Indítási feladatok definiálása a szerepkörökhöz
Az indítási feladatokkal műveleteket hajthat végre egy szerepkör indítása előtt. A .NET-keretrendszer telepítése az indítási feladat részeként 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.
Adja hozzá a következő tartalmat a ServiceDefinition.csdef fájlhoz a WebRole vagy 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éséhez á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 tekintse meg az Azure Cloud Services gyakori indítási feladatait.
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 megtalálható-e a számító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ához a szkript naplózza az összes tevékenységet a fájl startuptasklog -(aktuális dátum és idő).txt, amely az InstallLogs helyi tárolóban van tárolva.
Fontos
A install.cmd fájl létrehozásához használjon egy egyszerű szövegszerkesztőt, például a Windows Jegyzettömbet. Ha a Visual Studio használatával hoz létre egy szövegfájlt, és a bővítményt .cmd értékre módosítja, a fájl továbbra is tartalmazhat UTF-8 bájtos rendelésjelet. Ez a jel hibát okozhat a szkript első sora 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
Adja hozzá a install.cmd fájlt az egyes szerepkörökhöz a jelen cikk korábbi részében ismertetett Megoldáskezelő Meglévő elem hozzáadása>funkcióval.
A lépés befejezése után minden szerepkörnek rendelkeznie kell a .NET telepítőfájllal és a install.cmd fájllal.
Diagnosztika konfigurálása 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 az Azure Diagnosticst az indítási szkript vagy a .NET-telepítő által létrehozott naplófájlok Azure Blob Storage-ba való átvitelére. Ezzel a módszerrel úgy tekintheti meg a naplókat, hogy nem távoli asztalra, hanem a Blob Storage-ból tölti le a naplófájlokat a szerepkörbe.
A Diagnostics 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 Diagnosticst, hogy a NETFXInstall erőforrás naplókönyvtárában lévő fájlokat a netfx-install blobtároló Diagnosztikai tárfiókjába helyezze át.
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 szükséges). A felhőszolgáltatás-szerepkörök elfoglalt á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.