IIS Manager is divided into three main panels:
What it is: The root level representing your entire IIS installation
What you can do: Configure server-wide settings, view overall health, manage certificates
What it is: Containers that isolate web applications from each other
What you can do:
What it is: The default website that comes with IIS (usually on port 80)
What you can do:
What it is: Virtual directories that can have their own settings
What you can do:
What it is: SSL/TLS certificates for HTTPS
What you can do: Import, export, request, and manage SSL certificates
The features shown depend on what you've selected in the Connections tree. Here's what you'll see:
Anonymous Authentication: Allow access without login (most common)
Windows Authentication: Use Windows credentials (domain logins)
Basic Authentication: Username/password over HTTP (not secure)
Forms Authentication: Custom login pages
What it does: Control who can access your site/application
Options: Allow/deny specific users, groups, or everyone
What it does: Sets which file loads when someone visits your site without specifying a file
Common defaults: index.html, default.aspx, index.php
Example: When someone goes to yoursite.com, it shows yoursite.com/index.html
What it does: Shows folder contents when no default document exists
What it does: Configure custom error pages (404, 500, etc.)
Options: Show detailed errors, custom error pages, or simple messages
What it does: Cache page content to improve performance
When to use: For content that doesn't change frequently
What it does: Compress responses to reduce bandwidth
Types: Static compression (files) and dynamic compression (generated content)
What it does: Configure HTTPS requirements
Options:
What it does: Block dangerous requests
Can block: File extensions, large requests, specific characters
What it does: Record website access and errors
Log formats: IIS, W3C, NCSA
Default location: C:\inetpub\logs\LogFiles
What it does: Detailed logging for troubleshooting slow or failed requests
When to use: When debugging performance or error issues
What it does: Redirect or rewrite URLs
Examples: Remove .html extensions, redirect HTTP to HTTPS
What it does: Add custom headers to responses
Common uses: Security headers, cache control, CORS
What it does: Tell browsers how to handle different file types
Example: .pdf files should be treated as application/pdf
The Actions pane changes based on what you've selected. Here are the most common actions:
What it does: Completely restarts the IIS service
What it does: Control individual websites
When stopped: Website returns "Service Unavailable"
What it does: Opens the website in your default browser
Options: Browse on different ports if configured
What it does: Configure how people access your site
Settings:
What it does: Restarts the application pool (recommended first troubleshooting step)
Impact: Less disruptive than full IIS restart
Key settings:
Connections → Sites → Your Site → Check if "Started" in Actions pane
Connections → Application Pools → Find your pool → Recycle
Features → Logging → View log files (usually C:\inetpub\logs\LogFiles)
Features → Error Pages → Edit Feature Settings → Detailed errors
Server Certificates → Import or Request certificate
Site → Bindings → Add → HTTPS, Port 443, Select certificate
Site → SSL Settings → Require SSL
Application Pools → Add Application Pool → Set .NET version
Sites → Add Website → Set name, physical path, port
Site → Bindings → Add domain names, SSL if needed
Causes:
Causes:
Causes:
Troubleshooting:
When IIS Manager won't open or is unresponsive, use these methods:
PowerShell/Command Prompt (as Admin):
iisreset
- Restart everythingiisreset /stop
- Stop IISiisreset /start
- Start IISiisreset /restart
- Restart with timeoutGUI Method:
PowerShell Commands:
Stop-Service W3SVC -Force
- Stop web serviceStart-Service W3SVC
- Start web serviceRestart-Service W3SVC -Force
- Restart web serviceStop-Service WAS -Force
- Stop activation serviceStart-Service WAS
- Start activation serviceCommand Prompt:
net stop w3svc
- Stop web servicenet start w3svc
- Start web servicenet stop was /y
- Stop activation servicenet start was
- Start activation serviceGUI Method:
PowerShell (requires WebAdministration module):
Import-Module WebAdministration
Restart-WebAppPool "DefaultAppPool"
- Recycle specific poolStop-WebAppPool "DefaultAppPool"
- Stop poolStart-WebAppPool "DefaultAppPool"
- Start poolGet-WebAppPoolState "DefaultAppPool"
- Check statusAppCmd (command line):
%windir%\system32\inetsrv\appcmd recycle apppool "DefaultAppPool"
%windir%\system32\inetsrv\appcmd stop apppool "DefaultAppPool"
%windir%\system32\inetsrv\appcmd start apppool "DefaultAppPool"
When IIS Manager works:
PowerShell:
Stop-WebSite "Default Web Site"
- Stop websiteStart-WebSite "Default Web Site"
- Start websiteGet-WebSite
- List all websites and statusAppCmd:
%windir%\system32\inetsrv\appcmd stop site "Default Web Site"
%windir%\system32\inetsrv\appcmd start site "Default Web Site"
taskkill /f /im w3wp.exe
- Kill all IIS worker processestaskkill /f /im inetinfo.exe
- Kill IIS admin processPowerShell Method:
Import-Module WebAdministration
Get-WebAppPoolState -Name "YourAppPool"
- Check status firstRestart-WebAppPool -Name "YourAppPool"
- Recycle itGUI Method:
Why this works: Clears memory leaks, reloads configuration, much faster than full restart
PowerShell Method:
Set-WebConfigurationProperty -Filter "system.webServer/httpErrors" -Name "errorMode" -Value "Custom" -PSPath "IIS:\Sites\Default Web Site"
GUI Method:
Why: Detailed errors expose server information to attackers
PowerShell Method:
Get-EventLog -LogName Application -Source "*IIS*" -Newest 10
- Recent IIS eventsGet-EventLog -LogName System -Source "*W3SVC*" -Newest 10
- Web service eventsGet-WinEvent -FilterHashtable @{LogName="Application"; Level=2} -MaxEvents 10
- Recent errorsGUI Method:
Key sources to look for: ASP.NET, IIS-W3SVC, WAS, IIS Express
PowerShell Method:
Set-WebConfigurationProperty -Filter "system.webServer/tracing/traceFailedRequests" -Name "enabled" -Value $true -PSPath "IIS:\Sites\Default Web Site"
Add-WebConfigurationProperty -Filter "system.webServer/tracing/traceFailedRequests" -Name "." -Value @{path="*"; statusCodes="400-599"; timeTaken="00:00:30"} -PSPath "IIS:\Sites\Default Web Site"
GUI Method:
View results: C:\inetpub\logs\FailedReqLogFiles\ - Open .xml files in browser
PowerShell Method:
Backup-WebConfiguration -Name "BeforeChanges_$(Get-Date -Format 'yyyyMMdd_HHmm')"
Get-WebConfigurationBackup
- List backupsRestore-WebConfiguration -Name "YourBackupName"
- RestoreManual Method:
GUI Method:
%windir%\system32\inetsrv\appcmd add backup "BackupName"
iisreset
Restart-WebAppPool "PoolName"
Get-EventLog -LogName Application -Source "*IIS*"
Backup-WebConfiguration -Name "BackupName"