Exporter (0) Imprimer
Développer tout

Utiliser AppCmd.exe pour configurer IIS au démarrage

Mis à jour: novembre 2013

L'outil en ligne de commande AppCmd.exe peut être utilisé pour gérer les paramètres IIS au démarrage sur Windows Azure.

AppCmd.exe fournit un accès en ligne de commande pratique aux paramètres de configuration à utiliser dans les tâches de démarrage sur Windows Azure. En utilisant AppCmd.exe, les paramètres de site Web peuvent être ajoutés, modifiés ou supprimés pour les applications et les sites. Pour plus d'informations sur AppCmd.exe, consultez AppCmd.exe sur Microsoft Technet.

Pour utiliser AppCmd.exe au démarrage, ajoutez les commandes AppCmd.exe appropriées à votre tâche de démarrage.

Toutefois, certains facteurs peuvent compliquer l'utilisation d'AppCmd.exe dans les tâches de démarrage :

  • Les tâches de démarrage peuvent être exécutées plusieurs fois entre les redémarrages. Cela peut se produire si le rôle est recyclé, par exemple.

  • Certaines actions d'AppCmd.exe peuvent générer des erreurs si elles sont effectuées plusieurs fois. Une tentative d'ajout d'une section à Web.config deux fois peut générer une erreur.

  • Les tâches de démarrage échouent si elles retournent un code de sortie différent de zéro ou errorlevel. Cela peut se produire si AppCmd.exe génère une erreur.

Pour les raisons répertoriées, il est conseillé de vérifier errorlevel après l'exécution d'AppCmd.exe pour vous assurer que AppCmd.exe s'est exécuté comme prévu. Par exemple, après avoir essayé d'ajouter une section à Web.config, la tâche de démarrage peut vérifier si errorlevel est égal à 183. Un errorlevel égal à 183 est l'erreur attendue lors d'une tentative d'ajout d'une section Web.config qui existe déjà. Dans la mesure où la section Web.config a déjà été ajoutée par une exécution précédente de la tâche de démarrage, la tâche de démarrage doit continuer. Toute autre erreur, par exemple errorlevel 5 « accès refusé, » doit être enregistrée et la tâche de démarrage doit s'arrêter avec errorlevel de l'erreur. Un errorlevel 5 peut indiquer que l'attribut executionContext pour la tâche de démarrage doit être elevated au lieu de limited. Les errorlevels retournés par AppCmd.exe sont répertoriés dans le fichier winerror.h, et se trouvent également dans System Error Codes sur MSDN.

Exemple

Cet exemple ajoute une section de compression et une entrée de compression pour JSON au fichier Web.config, avec la gestion des erreurs et la journalisation.

Les sections appropriées du fichier ServiceDefinition.csdef sont indiquées ici, notamment la définition de l'attribut executionContext à elevated pour donner à AppCmd.exe des autorisations suffisantes afin de modifier les paramètres du fichier Web.config :

    <Startup>
      <Task commandLine="Startup.cmd" executionContext="elevated" taskType="simple" />
    </Startup>

Le fichier de commandes AppCmd.exe utilise Startup.cmd pour ajouter une section de compression et une entrée de compression pour JSON au fichier Web.config. L'errorlevel 183 attendu est défini à zéro en utilisant le programme en ligne de commande VERIFY.EXE. Les errorlevels inattendus sont enregistrés dans StartupErrorLog.txt.

REM   *** Add a compression section to the Web.config file. ***
%windir%\system32\inetsrv\appcmd set config /section:urlCompression /doDynamicCompression:True /commit:apphost >> "%TEMP%\StartupLog.txt" 2>&1

REM   ERRORLEVEL 183 occurs when trying to add a section that already exists. This error is expected if this
REM   batch file were executed twice. This can occur and must be accounted for in a Windows Azure startup
REM   task. To handle this situation, set the ERRORLEVEL to zero by using the Verify command. The Verify
REM   command will safely set the ERRORLEVEL to zero.
IF %ERRORLEVEL% EQU 183 DO VERIFY > NUL

REM   If the ERRORLEVEL is not zero at this point, some other error occurred.
IF %ERRORLEVEL% NEQ 0 (
   ECHO Error adding a compression section to the Web.config file. >> "%TEMP%\StartupLog.txt" 2>&1
   GOTO ErrorExit
)

REM   *** Add compression for json. ***
%windir%\system32\inetsrv\appcmd set config  -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/json; charset=utf-8',enabled='True']" /commit:apphost >> "%TEMP%\StartupLog.txt" 2>&1
IF %ERRORLEVEL% EQU 183 VERIFY > NUL
IF %ERRORLEVEL% NEQ 0 (
   ECHO Error adding the JSON compression type to the Web.config file. >> "%TEMP%\StartupLog.txt" 2>&1
   GOTO ErrorExit
)

REM   *** Exit batch file. ***
EXIT /b 0

REM   *** Log error and exit ***
:ErrorExit
REM   Report the date, time, and ERRORLEVEL of the error.
DATE /T >> "%TEMP%\StartupLog.txt" 2>&1
TIME /T >> "%TEMP%\StartupLog.txt" 2>&1
ECHO An error occurred during startup. ERRORLEVEL = %ERRORLEVEL% >> "%TEMP%\StartupLog.txt" 2>&1
EXIT %ERRORLEVEL%

Voir aussi

Afficher:
© 2014 Microsoft