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.
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:
Faça uma cópia de segurança do ficheiro ApplicationHost.config. Para fazer isto, consulte a Secção A.
Localize e corrija o atributo preCondition do módulo. Certifique-se de que está corretamente configurado e corresponde às características do conjunto aplicacional ou dos processos de trabalho que irão utilizar o módulo. Para localizar o atributo, consulte a Secção B.
Depois de corrigidas as pré-condições, o módulo deverá ser carregado com êxito.
Fazer uma cópia de segurança do ficheiro ApplicationHost.config
Para fazer uma cópia de segurança do ficheiro ApplicationHost.config:
Abra uma janela de linha de comandos elevada. Clique em Iniciar, aponte para Todos os Programas, clique em Acessórios, clique com o botão direito do rato em Linha de Comandos e depois clique em Executar como administrador.
Mude para o diretório %Windir%\system32\inetsrv.
Escreva appcmd add backup NomeCópiaSegurança para fazer a 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:
Abra uma janela de linha de comandos elevada. Clique em Iniciar, aponte para Todos os Programas, clique em Acessórios, clique com o botão direito do rato em Linha de Comandos e depois clique em Executar como administrador.
Escreva cd %Windir%\system32\inetsrv\config
Escreva notepad applicationHost.config
No bloco de notas, procure a secção globalModules na secção system.webServer.
Localize a entrada do módulo que contém o atributo preCondition e modifique-a, se necessário.
Guarde o ficheiro ApplicationHost.config e feche o bloco de notas.
Para obter mais informações sobre a secção globalModules, veja IIS 8: adicionar Elemento para globalModules (Esquema de Definiçõ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>