Internet Information Services (IIS) 9 enables developers to easily configure native and managed code modules that process requests made to the Web server. In order for worker processes to load them, the modules must be configured correctly. Proper module configuration requires that the module have a unique name, and a valid type or path. Managed modules can specify whether they should be invoked only for requests to ASP.NET applications or managed handlers. When specified, this setting can optimize performance.
Correct a module's registration
In the IIS10 environment, a module is a logical entity that can subscribe to server events. The Web server is configured to load the module at server startup. During startup, the server asks the module to register for the events in which it is interested. The module implementation is responsible for registering the module for the events it requires. If the module does not have a valid entry point that the server can access to register it, registration will fail.
To resolve this issue, follow these steps:
Create a backup of the ApplicationHost.config file. To do this, see Section A.
Remove the module from the list of modules in the globalModules section of ApplicationHost.config. If the module is listed in ApplicationHost.config, the server will try to load it upon startup, and each worker process that tries to use it will be unable to do this. To remove the module from configuration, see Section B.
Have the developer correct the entry point in the module so that it can register successfully with the server.
After the module's entry point has been corrected, re-add the module to ApplicationHost.config.
Create a backup of the ApplicationHost.config file
To create a backup of the ApplicationHost.config file:
Open an elevated Command Prompt window. Click Start, point to All Programs, click Accessories, right-click Command Prompt, and then click Run as administrator.
Change to the directory %Windir%\system32\inetsrv.
Type appcmd add backup backupName to back up the ApplicationHost.config file.
A directory with the backup name that you specify will be created under the %Windir%\system32\inetsrv\backup directory. If you do not specify a name, appcmd will generate a directory name automatically using the current date and time.
Remove the module from configuration
To remove the module from configuration:
Open an elevated Command Prompt window. Click Start, point to All Programs, click Accessories, right-click Command Prompt, and then click Run as administrator.
Change the directory to %Windir%\system32\inetsrv\config.
Type notepad ApplicationHost.config.
In notepad, search for the globalModules section under the system.webServer section.
Find the module entry that is failing and remove it.
Save the ApplicationHost.config file, and exit notepad.
For more information about the globalModules section, see IIS 10: add Element for globalModules (IIS Settings Schema).
Target | Microsoft.Windows.InternetInformationServices.10.0.WebServer |
Category | Alert |
Enabled | True |
Event_ID | 2295 |
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.registration.error.detected.failed.to.find.RegisterModule.entrypoint" 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>2295</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.registration.error.detected.failed.to.find.RegisterModule.entrypoint.AlertMessage"]$</AlertMessageId>
</WriteAction>
</WriteActions>
</Rule>