Internetowe usługi informacyjne (IIS) 9 umożliwiają deweloperom proste konfigurowanie macierzystych i zarządzanych modułów kodu, które mogą przetwarzać żądania wysyłane do serwera sieci Web. Aby procesy robocze mogły załadować moduły, muszą one być prawidłowo skonfigurowane. Prawidłowa konfiguracja modułu wymaga podania unikatowej nazwy oraz prawidłowego typu lub ścieżki. Dla modułów zarządzanych można określić, czy powinny być wywoływane tylko w przypadku żądań do aplikacji ASP.NET lub zarządzanych programów obsługi. Określenie tego ustawienia może zoptymalizować wydajność.
Popraw warunki wstępne modułu
Wpisy modułu mają opcjonalny atrybut preCondition, który może zawierać warunki wymagane do załadowania modułu. Na przykład atrybut preCondition może wskazywać, że usługi IIS mają ładować moduł tylko dla pul aplikacji działających w trybie zintegrowanym, tylko dla pul aplikacji działających w trybie ISAPI albo tylko dla pul aplikacji korzystających z określonej wersji środowiska .NET Framework. To ostatnie ustawienie umożliwia używanie różnych wersji modułu mechanizmu zarządzanego dla pul aplikacji korzystających z różnych wersji środowiska uruchomieniowego CLR.
Oto pochodzący z sekcji globalModules pliku ApplicationHost.config przykład wpisu modułu z atrybutem warunku wstępnego:
<globalModules>
<add name="ManagedEngine"
image="%Windir%\Microsoft.NET\Framework\v2.0.50727\webengine.dll"
preCondition="integratedMode,runtimeVersionv2.0,bitness32"
/>
</globalModules>
Przed załadowaniem każdego modułu serwer sprawdza, czy warunek wstępny jest spełniony (jeśli znajduje się on w konfiguracji). Jeśli dowolny z warunków wstępnych ładowania nie jest spełniony, moduł nie zostanie załadowany.
Aby rozwiązać ten problem:
Utwórz kopię zapasową pliku ApplicationHost.config. Odpowiednie instrukcje można znaleźć w sekcji A.
Znajdź i popraw atrybut preCondition modułu. Upewnij się, że jest on poprawnie skonfigurowany i że odpowiada charakterystyce puli aplikacji lub procesów roboczych, które będą używać tego modułu. Instrukcje znajdowania atrybutu podano w sekcji B.
Po poprawieniu warunków wstępnych moduł powinien zostać załadowany pomyślnie.
Wykonaj kopię zapasową pliku ApplicationHost.config
Aby wykonać kopię zapasową pliku ApplicationHost.config:
Otwórz wiersz polecenia z podwyższonym poziomem uprawnień. Kliknij przycisk Start, wskaż polecenie Wszystkie programy, kliknij opcję Akcesoria, prawym przyciskiem myszy kliknij opcję Wiersz polecenia, a następnie kliknij polecenie Uruchom jako administrator.
Przejdź do katalogu %Windir%\system32\inetsrv.
Wpisz appcmd add backup nazwa_kopii_zapasowej, aby wykonać kopię zapasową pliku ApplicationHost.config.
W katalogu %Windir%\system32\inetsrv\backup zostanie utworzony katalog o podanej nazwie kopii zapasowej. Jeśli nie określisz nazwy, plik Appcmd.exe automatycznie wygeneruje nazwę katalogu, korzystając z bieżącej daty i godziny.
Znajdź wpis modułu w pliku ApplicationHost.config
Aby znaleźć wpis modułu w pliku ApplicationHost.config:
Otwórz wiersz polecenia z podwyższonym poziomem uprawnień. Kliknij przycisk Start, wskaż polecenie Wszystkie programy, kliknij opcję Akcesoria, prawym przyciskiem myszy kliknij opcję Wiersz polecenia, a następnie kliknij polecenie Uruchom jako administrator.
Wpisz cd %Windir%\system32\inetsrv\config
Wpisz notepad applicationHost.config
W Notatniku znajdź sekcję globalModules w ramach sekcji system.webServer.
Znajdź wpis modułu z atrybutem preCondition i zmodyfikuj go, jeśli to konieczne.
Zapisz plik ApplicationHost.config i wyjdź z Notatnika.
Aby uzyskać więcej informacji na temat sekcji globalModules, zobacz IIS 10: add Element for globalModules (IIS Settings Schema) (IIS 10: element add dla elementu globalModules — schemat ustawień usług IIS).
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>