Internet Information Services (IIS) 8 permet aux développeurs de configurer facilement des modules de code natifs et managés qui traitent les demandes envoyées au serveur web. Pour que les processus de travail puissent les charger, les modules doivent être correctement configurés. Pour qu'un module soit correctement configuré, il doit avoir un nom unique et un chemin ou un type valide. Les modules gérés peuvent spécifier s'ils doivent uniquement être appelés pour les demandes destinées aux applications ASP.NET ou aux gestionnaires de code managés. S'il est spécifié, ce paramètre peut optimiser les performances.
Corriger les conditions préalables d'un module
Les entrées de module ont un attribut preCondition facultatif qui peut contenir des conditions pour le module à charger. Par exemple, preCondition peut spécifier que IIS doit charger le module uniquement pour les pools d'applications qui fonctionnent en mode intégré, uniquement pour les pools d'applications qui fonctionnent en mode ISAPI ou uniquement pour les pools d'applications qui utilisent une version de .NET Framework spécifiée. Ce dernier paramètre permet d'utiliser des versions séparées du module moteur géré pour les pools d'applications qui utilisent différentes versions du runtime CLR.
Voici un exemple issu de la section globalModules du fichier ApplicationHost.config d'une entrée de module qui comporte un attribut preCondition :
<globalModules>
<add name="ManagedEngine"
image="%Windir%\Microsoft.NET\Framework\v2.0.50727\webengine.dll"
preCondition="integratedMode,runtimeVersionv2.0,bitness32"
/>
</globalModules>
Avant de charger chaque module, le serveur évalue la condition préalable si elle est présente dans la configuration. Si une des conditions préalables au chargement renvoie la valeur false, le module n'est pas chargé.
Pour résoudre ce problème :
Sauvegardez le fichier ApplicationHost.config. Pour ce faire, reportez-vous à la section A.
Recherchez et corrigez l'attribut preCondition du module. Vérifiez qu'il est correctement configuré et qu'il correspond aux caractéristiques du pool d'applications ou des processus de travail qui utiliseront le module. Pour rechercher l'attribut, reportez-vous à la section B.
Une fois les conditions préalables corrigées, le module devrait normalement se charger.
Sauvegarder le fichier ApplicationHost.config
Pour sauvegarder le fichier ApplicationHost.config :
Ouvrez une fenêtre d'invite de commandes avec privilèges élevés. Cliquez sur Démarrer, pointez sur Tous les programmes, cliquez sur Accessoires, cliquez avec le bouton droit sur Invite de commandes, puis cliquez sur Exécuter en tant qu’administrateur.
Spécifiez le répertoire %Windir%\system32\inetsrv.
Saisissez appcmd add backup nomSauvegarde pour sauvegarder le fichier ApplicationHost.config.
Un répertoire portant le nom de sauvegarde que vous spécifiez est créé sous le répertoire %Windir%\system32\inetsrv\backup. Si vous ne spécifiez pas de nom, Appcmd.exe génère automatiquement un nom de répertoire à l'aide de la date et de l'heure actuelles.
Rechercher l'entrée de module dans le fichier ApplicationHost.config
Pour rechercher l'entrée de module dans le fichier ApplicationHost.config :
Ouvrez une fenêtre d'invite de commandes avec privilèges élevés. Cliquez sur Démarrer, pointez sur Tous les programmes, cliquez sur Accessoires, cliquez avec le bouton droit sur Invite de commandes, puis cliquez sur Exécuter en tant qu’administrateur.
Tapez cd %Windir%\system32\inetsrv\config
Tapez notepad applicationHost.config
Dans le Bloc-notes, recherchez la section globalModules sous la section system.webServer.
Recherchez l'entrée de module qui contient l'attribut preCondition et modifiez-la si nécessaire.
Enregistrez le fichier ApplicationHost.config et quittez le Bloc-notes.
Pour plus d'informations sur la section globalModules, consultez IIS 8 : élément add pour globalModules (schéma des paramètres IIS).
Target | Microsoft.Windows.InternetInformationServices.6.2.WebServer |
Category | Alert |
Enabled | True |
Event_ID | 2296 |
Event Source | Microsoft-Windows-IIS-W3SVC-WP |
Alert Generate | False |
Remotable | True |
Event Log | Application |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DS | DataSource | Microsoft.Windows.EventProvider | Default |
WA | WriteAction | Microsoft.Windows.Server.IIS.6.2.GenerateAlertAction.SuppressedByDescription | Default |
<Rule ID="Microsoft.Windows.InternetInformationServices.6.2.Module.has.an.invalid.precondition" Enabled="true" Target="Microsoft.Windows.InternetInformationServices.6.2.WebServer" ConfirmDelivery="false" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>Alert</Category>
<DataSources>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Microsoft-Windows-IIS-W3SVC-WP</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>2296</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="WA" TypeID="Microsoft.Windows.Server.IIS.6.2.GenerateAlertAction.SuppressedByDescription">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.Windows.InternetInformationServices.6.2.Module.has.an.invalid.precondition.AlertMessage"]$</AlertMessageId>
</WriteAction>
</WriteActions>
</Rule>