Internet Information Services (IIS) 9 gör att utvecklare enkelt kan konfigurera förinställda och förvaltad kodmoduler som process förfrågningar till webbservern. För att arbetsprocessen ska kunna ladda dem, måste modulerna konfigureras korrekt. Rätt modul konfiguration kräver att modulen har ett unikt namn och en giltig typ eller sökväg. Behandlade moduler kan ange om de skall användas endast som förfrågningar till ASP.NET program eller förvaltade program. När det anges, kan denna inställning optimera prestanda.
Korrigera en moduls förhandsvillkor
Modulposter har ett valfritt preCondition-attribut som kan innehålla villkor för den modul som ska läsas in. Till exempel kan förhandsvillkoret ange att IIS enbart läser in modulen för programpooler som körs i integrerat läge, enbart för programpooler som körs i ISAPI-läge eller enbart programpooler som använder en angiven version av .NET Framework. Den sistnämnda inställningen gör det möjligt att använda separata versioner av den hanterade motormodulen för programpooler som använder olika versioner av CLR-körningen.
Här är ett exempel från globalModules-avsnittet för ApplicationHost.config-filen för en modulpost som har ett förhandsvillkorsattribut:
<globalModules>
<add name=”ManagedEngine”
image=”%Windir%\Microsoft.NET\Framework\v2.0.50727\webengine.dll”
preCondition=”integratedMode,runtimeVersionv2.0,bitness32”
/>
</globalModules>
Innan du läser in varje modul utvärderar servern förhandsvillkoret om det finns ett sådant i konfigurationen. Om någon av inläsningsförhandsvillkoren returnerar falskt resultat är modulen inte inläst.
Så här löser du problemet:
Säkerhetskopiera filen ApplicationHost.config. Se avsnitt A för anvisningar.
Hitta och korrigera modulens preCondition-attribut. Kontrollera att det är rätt konfigurerat och att det matchar egenskaperna hos programpoolen eller de arbetsprocesser som kommer att använda modulen. Information om hur du hittar attributet finns i avsnitt B.
När förhandsvillkoren har korrigerats bör modulen läsas in.
Säkerhetskopiera filen ApplicationHost.config
Så här säkerhetskopierar du filen ApplicationHost.config:
Öppna ett upphöjt Kommandotolkens fönster. Klicka på Start, för markören till Alla program, klicka på Tillbehör, högerklicka på Kommandotolken och klicka sedan på Kör som administratör.
Ändra till katalogen % Windir %\system32\inetsrv.
Skriv appcmd add backup backupName för att säkerhetskopiera filen ApplicationHost.config.
En katalog med säkerhetskopieringsnamnet skapas under katalogen %Windir%\system32\inetsrv\backup. Om du inte anger något namn genererar Appcmd.exe automatiskt ett katalognamn med aktuellt datum och tidpunkt.
Hitta modulposten i ApplicationHost.config-filen
Så här hittar du modulposten i ApplicationHost.config-filen:
Öppna ett upphöjt Kommandotolkens fönster. Klicka på Start, för markören till Alla program, klicka på Tillbehör, högerklicka på Kommandotolken och klicka sedan på Kör som administratör.
Skriv cd %Windir%\system32\inetsrv\config
Skriv notepad applicationHost.config
Sök i Anteckningar efter avsnittet globalModules under avsnittet system.webServer section.
Sök upp den modulpost som innehåller preCondition-attributet och ändra det vid behov.
Spara ApplicationHost.config filen och gå ut ur notepad.
Mer information om avsnittet globalModules finns i IIS 10: lägg till element för globalModules (IIS-inställningsschema).
Target | Microsoft.Windows.InternetInformationServices.10.0.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.10.0.GenerateAlertAction.SuppressedByDescription | Default |
<Rule ID="Microsoft.Windows.InternetInformationServices.10.0.Module.has.an.invalid.precondition" Enabled="true" Target="Microsoft.Windows.InternetInformationServices.10.0.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.10.0.GenerateAlertAction.SuppressedByDescription">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.Windows.InternetInformationServices.10.0.Module.has.an.invalid.precondition.AlertMessage"]$</AlertMessageId>
</WriteAction>
</WriteActions>
</Rule>