O IIS (Serviços de Informações da Internet) versão 8 permite que os desenvolvedores configurem de maneira fácil os módulos de códigos nativos e gerenciados que processam as solicitações feitas ao servidor Web. Para que os processos de trabalho carreguem os módulos, eles precisam estar configurados corretamente. A configuração correta dos módulos exige que eles tenham um nome exclusivo e um tipo ou caminho válido. Os módulos gerenciados podem especificar se devem ser invocados somente para solicitações de aplicativos ASP.NET ou manipuladores gerenciados. Quando especificada, essa configuração pode otimizar o desempenho.
Corrija as pré-condições de um módulo
As entradas do módulo têm um atributo preCondition opcional que pode conter condições para o carregamento do módulo. Por exemplo, a preCondition pode especificar que o IIS carregue o módulo somente para os pools de aplicativos que são executados no modo integrado, somente para os pools de aplicativos que são executados no modo ISAPI ou somente para os pools de aplicativos que usam uma versão específica do .NET Framework. A última opção possibilita o uso de versões distintas do módulo de mecanismo gerenciado para os pools de aplicativos que usam diferentes versões do tempo de execução de CLR.
Veja um exemplo da seção globalModules do arquivo ApplicationHost.config de uma entrada de módulo que tem um atributo preCondition:
<globalModules>
<add name="ManagedEngine"
image="%Windir%\Microsoft.NET\Framework\v2.0.50727\webengine.dll"
preCondition="integratedMode,runtimeVersionv2.0,bitness32"
/>
</globalModules>
Antes de carregar cada módulo, o servidor avalia a pré-condição se houver uma presente na configuração. Se alguma pré-condição de carregamento retornar como falsa, o módulo não é carregado.
Para resolver esse problema:
Faça backup do arquivo ApplicationHost.config. Para isso, consulte a Seção A.
Encontre e corrija o atributo preCondition do módulo. Verifique se está configurado corretamente e que corresponde às características do pool de aplicativos ou dos processos de trabalho que usarão esse módulo. Para encontrar o atributo, consulte a Seção B.
Depois de corrigir as pré-condições, o módulo deve carregar normalmente.
Faça backup do arquivo ApplicationHost.config
Para fazer backup do arquivo ApplicationHost.config:
Abra uma janela elevada de Prompt de Comando. Clique em Iniciar, aponte para Todos os Programas, clique em Acessórios, clique com o botão direito do mouse em Prompt de Comando e clique em Executar como administrador.
Altere para o diretório %Windir%\system32\inetsrv.
Digite appcmd add backup nomedebackup para fazer backup do arquivo ApplicationHost.config.
Um diretório com o nome de backup especificado será criado no diretório %Windir%\system32\inetsrv\backup. Se você não especificar um nome, Appcmd.exe criará um nome de diretório automaticamente usando a data e a hora atuais.
Encontre a entrada do módulo no arquivo ApplicationHost.config
Para encontrar a entrada do módulo no arquivo ApplicationHost.config:
Abra uma janela elevada de Prompt de Comando. Clique em Iniciar, aponte para Todos os Programas, clique em Acessórios, clique com o botão direito do mouse em Prompt de Comando e clique em Executar como administrador.
Digite cd %Windir%\system32\inetsrv\config
Digite notepad applicationHost.config
No bloco de notas, procure a seção globalModules, dentro da seção system.webServer.
Encontre a entrada do módulo que contém o atributo preCondition e modifique-o, se necessário.
Salve o arquivo ApplicationHost.config e feche o bloco de notas.
Para obter mais informações sobre a seção globalModules, confira IIS 8: adicionar um Elemento para executar globalModules (Esquema de Configurações do 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>