O Módulo tem uma pré-condição inválida

Microsoft.Windows.InternetInformationServices.6.2.Module.has.an.invalid.precondition (Rule)

Knowledge Base article:

Resumo

Com os Serviços de Informação Internet (IIS) 8, os programadores podem configurar módulos de código nativo e gerido que processam pedidos efetuados ao servidor Web. Para serem carregados pelos processos de trabalho, os módulos têm de estar corretamente configurados. A configuração correta do módulo necessita que o módulo tenha um nome exclusivo e um tipo ou caminho válido. Os módulos geridos podem especificar se devem ser invocados apenas para pedidos relativos às aplicações ASP.NET ou processadores geridos. Quando especificada, esta definição pode otimizar o desempenho.

Resoluções

Corrigir 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 módulo ser carregado. Por exemplo, o atributo preCondition pode especificar que o IIS carregue o módulo apenas para conjuntos aplicacionais que sejam executados no modo integrado ou no modo ISAPI, ou que utilizem uma versão especificada do .NET Framework. Esta última definição torna possível a utilização de versões separadas do módulo de motor gerido para conjuntos aplicacionais que utilizem diferentes versões do runtime CLR.

Segue-se um exemplo, retirado da secção globalModules do ficheiro ApplicationHost.config, de uma entrada de módulo com 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 alguma presente na configuração. Se alguma das pré-condições de carregamento devolver falso, o módulo não é carregado.

Para resolver este problema:

Fazer uma cópia de segurança do ficheiro ApplicationHost.config

Para fazer uma cópia de segurança do ficheiro ApplicationHost.config:

Será criado um diretório com o nome da cópia de segurança que especificou no diretório %Windir%\system32\inetsrv\backup. Se não especificar um nome, Appcmd.exe irá gerar automaticamente um nome de diretório utilizando a data e hora atuais.

Localizar a entrada do módulo no ficheiro ApplicationHost.config

Para localizar a entrada do módulo no ficheiro ApplicationHost.config:

Para obter mais informações sobre a secção globalModules, veja IIS 8: adicionar Elemento para globalModules (Esquema de Definições do IIS).

Element properties:

TargetMicrosoft.Windows.InternetInformationServices.6.2.WebServer
CategoryAlert
EnabledTrue
Event_ID2296
Event SourceMicrosoft-Windows-IIS-W3SVC-WP
Alert GenerateFalse
RemotableTrue
Event LogApplication

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.EventProvider Default
WA WriteAction Microsoft.Windows.Server.IIS.6.2.GenerateAlertAction.SuppressedByDescription Default

Source Code:

<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>