Internet Information Services (IIS) 8 consente agli sviluppatori di configurare facilmente moduli di codici nativi e gestiti per l'elaborazione delle richieste al server Web. Affinché i processi di lavoro possano caricarli, i moduli devono essere configurati correttamente. A questo scopo, è necessario che i moduli abbiano nomi univoci e tipi o percorsi validi. I moduli gestiti possono indicare se devono essere richiamati solo per le richieste agli handler gestiti o alle applicazioni ASP.NET. Quando viene specificata questa opzione, le prestazioni possono risultare ottimizzate.
Correggere le precondizioni di un modulo
I moduli hanno l'attributo facoltativo preCondition che può contenere condizioni per il caricamento del modulo. Ad esempio, preCondition può specificare che IIS deve caricare il modulo solo per i pool di applicazioni eseguiti in modalità integrata, solo per i pool di applicazioni eseguiti in modalità ISAPI o solo per i pool di applicazioni che utilizzano una determinata versione di .NET Framework. Questa ultima impostazione consente di utilizzare versioni separate del modulo del motore gestito per i pool di applicazioni che utilizzano diverse versioni di runtime CLR.
Di seguito è fornito un esempio della sezione globalModules nel file ApplicationHost.config per un modulo con l'attributo preCondition:
<globalModules>
<add name="ManagedEngine"
image="%Windir%\Microsoft.NET\Framework\v2.0.50727\webengine.dll"
preCondition="integratedMode,runtimeVersionv2.0,bitness32"
/>
</globalModules>
Prima di caricare ciascun modulo, il server valuta la precondizione, se presente nella configurazione. Se una delle precondizioni di caricamento restituisce un valore false, il modulo non viene caricato.
Per risolvere il problema:
Eseguire una copia di backup del file ApplicationHost.config. A questo scopo, vedere la Sezione A.
Individuare e correggere l'attributo preCondition del modulo. Controllare che sia configurato correttamente e che corrisponda alle caratteristiche del pool di applicazioni o dei processi di lavoro che utilizzeranno il modulo. Per individuare l'attributo, vedere la Sezione B.
Una volta corrette le precondizioni, dovrebbe poter essere possibile caricare il modulo.
Eseguire una copia di backup del file ApplicationHost.config.
Per eseguire una copia di backup del file ApplicationHost.config:
Aprire una finestra del prompt dei comandi con privilegi elevati. Fare clic su Start, Tutti i programmi, Accessori, fare clic con il pulsante destro del mouse su Prompt dei comandi, quindi scegliere Esegui come amministratore.
Passare alla directory %Windir%\system32\inetsrv.
Digitare appcmd add backup nomebackup per eseguire il backup del file ApplicationHost.config.
Una directory con il nome di backup specificato verrà creata nella directory %Windir%\system32\inetsrv\backup. Se non si specifica un nome, Appcmd.exe genera automaticamente un nome per la directory utilizzando la data e l'ora correnti.
Individuare la voce relativa al modulo nel file ApplicationHost.config
Per individuare la voce relativa al modulo nel file ApplicationHost.config:
Aprire una finestra del prompt dei comandi con privilegi elevati. Fare clic su Start, Tutti i programmi, Accessori, fare clic con il pulsante destro del mouse su Prompt dei comandi, quindi scegliere Esegui come amministratore.
Digitare cd %Windir%\system32\inetsrv\config
Digitare notepad applicationHost.config
In Blocco note, cercare la sezione globalModules all'interno della sezione system.webServer.
Individuare la voce relativa al modulo che contiene l'attributo preCondition e, se necessario, modificarla.
Salvare il file ApplicationHost.config e chiudere Blocco note.
Per ulteriori informazioni sulla sezione globalModules, vedere IIS 8: elemento add per globalModules (schema impostazioni 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="onEssentialMonitoring" 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>