IIS Windows Features Required for Nodinite
Nodinite Core Services are web applications hosted in Internet Information Services (IIS) on Windows Server: each Core Service is its own IIS web site with its own port. This page details all required IIS Windows Features for a successful Nodinite v7 installation. Container hosting (Docker, Kubernetes, OpenShift, Azure Container Apps) is coming and doesn't need these features.
On This Page
- Identify required IIS features for Nodinite 7 (.NET 10.0 - Hosting Bundle).
- Install features quickly using PowerShell scripts.
- Verify installation and troubleshoot common issues.
Understanding the Installation Order
The order matters: the .NET 10 Hosting Bundle registers the ASP.NET Core Module V2 in IIS only if IIS is already installed. Install the IIS features first, then the runtimes, then verify, and only then run the Nodinite package with the CLI.
Install-WindowsFeature"] B["fa:fa-code 2. .NET Framework 4.8
only for .NET Framework agents"] C["fa:fa-box 3. .NET 10 Hosting Bundle
adds ASP.NET Core Module V2"] D{"4. Verify module
registered in IIS?"} E["fa:fa-wrench Repair the Hosting Bundle
then iisreset"] F["fa:fa-terminal 5. Run the package
with the CLI"] A --> B B --> C C --> D D -->|"No"| E E --> D D -->|"Yes"| F style A fill:#2678BD style B fill:#3F827B style C fill:#2678BD style D fill:#FFD525 style E fill:#c33d34 style F fill:#93d16d
Diagram: install the IIS features and runtimes in order (blue, with the optional .NET Framework 4.8 in teal), verify the ASP.NET Core Module (yellow), repair the Hosting Bundle when the module isn't registered (red), then run the package as described in Step 7: Run the CLI Workflow (green).
Scope and Page Boundaries
Use this page for IIS role and feature prerequisites only.
- For authentication behavior and App Pool account setup, use IIS Authentication settings.
- For slow browser authentication and Kerberos/NTLM troubleshooting, use NTLM vs Kerberos Authentication.
- For verb-related failures such as HTTP 405, use HTTP Error 405.0 - Method Not Allowed.
- For hub navigation by symptom, start from IIS Troubleshooting Overview.
Nodinite Version Overview
Nodinite uses different runtime frameworks depending on the version:
| Version | Runtime Framework | IIS Requirements |
|---|---|---|
| Nodinite 7 | .NET 10 + ASP.NET Core (.NET Framework 4.8 only for .NET Framework agents) | Modern stack with ASP.NET Core Module V2 |
| Nodinite 6 | .NET Framework 4.8 | ⚠️ No longer supported; see Updating from v6 to v7 |
Nodinite 7 (.NET 10 + ASP.NET Core)
Nodinite 7 uses .NET 10 for all Core Services, and the App Pools run with No Managed Code. The Log API has no WCF endpoints in v7. .NET Framework 4.8 is needed only on servers that run the agents still built for it (BizTalk, Windows Server, Dynamics CRM, and IBM DataPower); see .NET Framework 4.8 agents.
Required IIS Windows Features for Nodinite 7
| Feature Category | Feature Name | PowerShell Feature Name | Required | Comment |
|---|---|---|---|---|
| Web Server Role | Web Server (IIS) | Web-Server |
✅ | Base IIS installation |
| Common HTTP Features | Default Document | Web-Default-Doc |
✅ | Serves default pages (index.html, default.aspx) |
| Directory Browsing | Web-Dir-Browsing |
Optional - not recommended for security | ||
| HTTP Errors | Web-Http-Errors |
✅ | Custom error pages | |
| HTTP Redirection | Web-Http-Redirect |
✅ | URL redirection for maintenance/upgrade scenarios | |
| Static Content | Web-Static-Content |
✅ | Serves static files (CSS, JavaScript, images) | |
| Health and Diagnostics | HTTP Logging | Web-Http-Logging |
✅ | Access logs for troubleshooting |
| Logging Tools | Web-Log-Libraries |
Optional - advanced logging scenarios | ||
| Request Monitor | Web-Request-Monitor |
✅ | Real-time request monitoring | |
| Tracing | Web-Http-Tracing |
Optional - detailed request tracing | ||
| Performance Features | Dynamic Content Compression | Web-Dyn-Compression |
✅ | Compresses dynamic responses (JSON, HTML) |
| Static Content Compression | Web-Stat-Compression |
✅ | Compresses static files (CSS, JS) | |
| Security Features | Basic Authentication | Web-Basic-Auth |
Optional - enable if using Basic Auth | |
| Request Filtering | Web-Filtering |
✅ | Protects against malicious requests | |
| Windows Authentication | Web-Windows-Auth |
✅ | Required when the environment uses Windows Authentication (Step 2: Auth); see IIS Authentication settings | |
| Application Development | .NET Extensibility 4.x | Web-Net-Ext45 |
⚠️ Conditional | Required on a server where the BizTalk or Windows Server Monitoring Agent runs in IIS; allows IIS to load and run managed code modules for .NET Framework apps |
| ASP.NET 4.x | Web-Asp-Net45 |
⚠️ Conditional | Required on a server where the BizTalk or Windows Server Monitoring Agent runs in IIS; enables IIS to run web applications built on .NET Framework (not .NET Core/.NET) | |
| ISAPI Extensions | Web-ISAPI-Ext |
⚠️ Conditional | Required on a server where the BizTalk or Windows Server Monitoring Agent runs in IIS; allows IIS to run applications and scripts (like ASP.NET .aspx pages) via DLLs | |
| ISAPI Filters | Web-ISAPI-Filter |
⚠️ Conditional | Required on a server where the BizTalk or Windows Server Monitoring Agent runs in IIS; enables IIS to filter and modify HTTP requests/responses at low level for authentication, logging, or URL rewriting | |
| ASP.NET Core Module V2 | Requires Hosting Bundle | ✅ | Critical - Required for .NET 10 (Core) Web Client and Web API | |
| Application Initialization | Application Initialization | Web-AppInit |
✅ | Required - Ensures IIS warms up app pools on server start or recycle, preventing cold-start failures |
| Management Tools | IIS Management Console | Web-Mgmt-Console |
✅ | GUI for IIS management |
| IIS Management Scripts and Tools | Web-Scripting-Tools |
✅ | Required for PowerShell automation and scripted installs |
Install All Required Features (PowerShell Script for Nodinite 7)
Run this PowerShell command as Administrator to install all required IIS features for Nodinite 7:
# Install IIS Windows Features for Nodinite 7
Install-WindowsFeature -Name Web-Server, `
Web-Default-Doc, `
Web-Http-Errors, `
Web-Http-Redirect, `
Web-Static-Content, `
Web-Http-Logging, `
Web-Request-Monitor, `
Web-Dyn-Compression, `
Web-Stat-Compression, `
Web-Filtering, `
Web-Windows-Auth, `
Web-AppInit, `
Web-Mgmt-Console, `
Web-Scripting-Tools `
-IncludeManagementTools
Add ASP.NET 4.x for the BizTalk and Windows Server Agents
The Nodinite 7 Core Services run on .NET 10 and don't need ASP.NET 4.x. On a server where the BizTalk or Windows Server Monitoring Agent runs in IIS, also install the .NET Framework features:
# Only for the BizTalk and Windows Server Monitoring Agents hosted in IIS
Install-WindowsFeature -Name Web-Net-Ext45, Web-Asp-Net45, Web-ISAPI-Ext, Web-ISAPI-Filter
Install the Runtimes After the IIS Features
After installing the IIS features, install, in this order:
- .NET Framework 4.8 - Only on servers that run the BizTalk, Windows Server, Dynamics CRM, or IBM DataPower agents
- .NET 10.0 - Hosting Bundle - Includes ASP.NET Core Runtime, .NET Runtime, and ASP.NET Core Module V2
Note
The ASP.NET Core Module V2 is installed automatically when you install the .NET Hosting Bundle. You do not need to install it separately. The verification check below will report
ASP.NET Core Module V2 is NOT installeduntil the Hosting Bundle has been installed — this is expected at this stage.
WebDAV Recommendation for Nodinite 7
WebDAV is not required by Nodinite 7 and has proven to be a frequent source of IIS conflicts. It can intercept PUT, DELETE, and other HTTP verbs before requests reach the Nodinite Web applications, which often leads to 405 Method Not Allowed errors during normal administration.
Use this rule:
- Dedicated Nodinite IIS server - Remove WebDAV completely
- Shared IIS server where no other application needs WebDAV - Remove WebDAV completely
- Shared IIS server where another application explicitly depends on WebDAV - Do not run the server-wide removal script below; isolate that application when possible and keep WebDAV away from the Nodinite applications. See HTTP Error 405.0 - Method Not Allowed
PowerShell 7 Script: Remove WebDAV from IIS
Run this script from an elevated PowerShell 7 session on Windows Server:
# Remove the IIS WebDAV feature when it is not required by any application on the server
Import-Module ServerManager -UseWindowsPowerShell -ErrorAction Stop
$featureName = 'Web-DAV-Publishing'
$feature = Get-WindowsFeature -Name $featureName -ErrorAction Stop
if ($feature.InstallState -eq 'Installed') {
$result = Uninstall-WindowsFeature -Name $featureName -ErrorAction Stop
if (-not $result.Success) {
throw 'WebDAV Publishing removal did not complete successfully.'
}
Write-Host 'WebDAV Publishing has been removed.' -ForegroundColor Green
if ($result.RestartNeeded -eq 'Yes') {
Write-Warning 'A server restart is required before continuing with Nodinite 7 installation or migration.'
} else {
Write-Host 'Restart IIS to ensure the removal is fully applied.' -ForegroundColor Yellow
}
} else {
Write-Host 'WebDAV Publishing is not installed. No action is required.' -ForegroundColor Yellow
}
Warning
Run the server-wide removal script only when WebDAV is not required by another application on the same IIS server.
Nodinite 6 (No Longer Supported)
Nodinite 6 used .NET Framework 4.8, classic ASP.NET, and virtual directories under the Default Web Site. v6 is no longer supported, and Nodinite 7 doesn't need the Default Web Site, because the CLI creates one IIS web site per Core Service. To move to v7, follow Updating from v6 to v7; after the upgrade, remove leftover v6 IIS rules as described in IIS URL Rewrite – Legacy v6 Redirect.
Verification Steps
After installing IIS Windows Features, verify the installation:
1. Check Installed Features (PowerShell)
# List all installed IIS features
Get-WindowsFeature|Where-Object {$_.Name -like "Web-*" -and $_.InstallState -eq "Installed"}|Format-Table Name, DisplayName
2. Verify IIS is Running
# Check IIS service status
Get-Service W3SVC
Expected output: Status should be "Running"
3. Test That IIS Responds
- If the Default Web Site still exists, open a browser on the server and navigate to
http://localhost(Nodinite 7 doesn't need this site) - You should see the IIS default welcome page
- If the page doesn't load, check the W3SVC service and the IIS configuration
4. Verify ASP.NET Core Module (Nodinite 7 Only)
Warning
Run this check only after you have installed the .NET 10 Hosting Bundle. If you run it before installing the Hosting Bundle, you will see
ASP.NET Core Module V2 is NOT installed— this is expected and does not indicate a problem with your IIS features installation.
# Check 1: Registry — most reliable, confirms Hosting Bundle was installed
$paths = @(
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall",
"HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall"
)
$hostingBundle = foreach ($path in $paths) {
Get-ChildItem $path -ErrorAction SilentlyContinue |
Get-ItemProperty |
Where-Object { $_.DisplayName -like "*ASP.NET Core*Hosting Bundle*" }
}
if ($hostingBundle) {
Write-Host "✅ Hosting Bundle is installed:" -ForegroundColor Green
$hostingBundle | Select-Object DisplayName, DisplayVersion | Format-Table -AutoSize
} else {
Write-Host "❌ Hosting Bundle is NOT installed" -ForegroundColor Red
}
# Check 2: DLL on disk — confirms the module file is present
$modulePath = "$env:ProgramFiles\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll"
if (Test-Path $modulePath) {
Write-Host "✅ ASP.NET Core Module V2 DLL found: $modulePath" -ForegroundColor Green
} else {
Write-Host "❌ ASP.NET Core Module V2 DLL not found at: $modulePath" -ForegroundColor Red
}
# Check 3: IIS registration in applicationHost.config
# NOTE: This only reflects registration at the time the Hosting Bundle was installed.
# If IIS features were enabled AFTER the Hosting Bundle was installed, this check
# will return NOT registered even though the Hosting Bundle is present on disk.
# Fix: run the Hosting Bundle installer again (Repair) to re-register the IIS module.
$configPath = "$env:windir\system32\inetsrv\config\applicationHost.config"
if (Test-Path $configPath) {
if (Select-String -Path $configPath -Pattern "AspNetCoreModuleV2" -Quiet) {
Write-Host "✅ ASP.NET Core Module V2 is registered in IIS (applicationHost.config)" -ForegroundColor Green
} else {
Write-Host "⚠️ ASP.NET Core Module V2 is NOT registered in IIS applicationHost.config" -ForegroundColor Yellow
Write-Host " If Check 1 and Check 2 passed, run a Repair of the .NET Hosting Bundle, then: iisreset" -ForegroundColor Yellow
}
}
Interpreting the Results
| Check 1 (Registry) | Check 2 (DLL) | Check 3 (IIS config) | Meaning |
|---|---|---|---|
| ✅ | ✅ | ✅ | Fully installed and registered — no action needed |
| ✅ | ✅ | ⚠️ | Hosting Bundle installed before IIS features were enabled. Run Repair on the Hosting Bundle installer, then iisreset |
| ❌ | ❌ | ❌ | Hosting Bundle not installed. Download and install it |
| ✅ | ❌ | ❌ | Corrupt installation. Uninstall and reinstall the Hosting Bundle |
Common Issues & Troubleshooting
Issue: PowerShell IIS Commands Not Available
Problem: Commands like Get-WebGlobalModule, Get-Website, or Get-WebApplication return "command not found" errors
Root Cause: The IIS Administration PowerShell module is not installed or not imported
Option 1: Install IIS Administration Tools (Recommended)
# Install IIS Administration PowerShell module
Install-WindowsFeature -Name Web-Scripting-Tools
# Alternative: Install from PowerShell Gallery (PowerShell 7)
Install-Module -Name IISAdministration -Force -AllowClobber
Option 2: Use Built-in PowerShell 7 Compatible Methods
# Check IIS status using CIM instead of Get-Website
Get-CimInstance -ClassName Win32_Service|Where-Object {$_.Name -eq "W3SVC"}
# Check application pools using appcmd.exe (always available)
& "$env:windir\system32\inetsrv\appcmd.exe" list apppool
# Check sites using appcmd.exe
& "$env:windir\system32\inetsrv\appcmd.exe" list site
Option 3: Import Legacy WebAdministration Module
# Import the legacy module (Windows PowerShell 5.1 compatible)
Import-Module WebAdministration -Force
Issue: Windows Authentication Not Working
Problem: Users prompted for credentials or authentication fails
Solution: Verify Windows Authentication at every level:
- IIS Feature Level: Ensure
Web-Windows-Authis installed - Web Site Level: Check the IIS Authentication settings of the Nodinite site
- Kerberos: Register the HTTP SPNs for the host name, see HTTP SPNs for IIS, and work through Login prompt asks for a password
- Application Level: Review Log API Prerequisites, Web API Prerequisites, Logging Service Prerequisites, Monitoring Service Prerequisites, Web Client Prerequisites
Issue: ASP.NET Core Module V2 Not Installed
Problem: Verification script reports ❌ Hosting Bundle is NOT installed, or Web Client/Web API fails with a 500.19 or 500.21 error
Root Cause: The ASP.NET Core Module V2 is not part of the IIS Windows Features. It is installed separately by the .NET 10 Hosting Bundle. Running the IIS features script alone will not install this module.
Solution
- Download .NET 10.0 — the link downloads the latest Hosting Bundle installer directly
- Install the Hosting Bundle (this installs ASP.NET Core Module V2 into IIS automatically)
- Restart IIS:
iisreset - Re-run the verification checks — all three should now pass
Issue: Hosting Bundle Installed but IIS Module Not Registered (Check 3 fails)
Problem: Verification Check 1 (registry) and Check 2 (DLL) pass, but Check 3 (IIS config) shows ⚠️ NOT registered
Root Cause: The Hosting Bundle was installed before IIS Windows Features were enabled. The installer only writes the IIS module registration when IIS is already present at install time. The DLL exists on disk, but applicationHost.config was never updated.
Solution
- Ensure all required IIS Windows Features are installed first
- Run the .NET Hosting Bundle installer again and select Repair
- Restart IIS:
iisreset - Re-run Check 3 — it should now show
✅ registered
Issue: ISAPI Extensions Blocked
Problem: A .NET Framework agent hosted in IIS (BizTalk or Windows Server Monitoring Agent) fails with "404.2 - ISAPI or CGI restriction"
Solution
- Open IIS Manager
- Select server node → Double-click "ISAPI and CGI Restrictions"
- Find ASP.NET entries → Set to "Allowed"
- For .NET Framework 4.8: Allow
%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll
Next Steps
- Install Nodinite v7 - Continue with the Nodinite 7 installation.
- Step 7: Run the CLI Workflow - Run the generated package.
- Update Nodinite v7 - Update an existing v7 installation.
- IIS Authentication settings - Configure Windows Authentication.
Related Topics
- IIS Troubleshooting Overview
- HTTP Error 405.0 - Method Not Allowed
- Web API Prerequisites
- Web Client Prerequisites
- Log API Prerequisites
- Logging Service Prerequisites
- Monitoring Service Prerequisites
- Prerequisites for Installing Nodinite
- gMSA accounts
- Install Certificates for gMSA
- Logon as a Service right
- MSDTC
- Updating from v6 to v7
- Planning your Nodinite Installation