IIS Manager Complete Overview

IIS Manager Layout Overview

IIS Manager is divided into three main panels:

Left Panel: Connections tree (navigation)
Center Panel: Features view (configuration options)
Right Panel: Actions pane (context-sensitive commands)

Left Panel: Connections Tree

Server Level (Root Node)

🖥️ Server Name (Computer Name)

What it is: The root level representing your entire IIS installation

What you can do: Configure server-wide settings, view overall health, manage certificates

Application Pools

🏊 Application Pools

What it is: Containers that isolate web applications from each other

What you can do:

  • Start/Stop/Recycle: Control app pool lifecycle
  • Advanced Settings: Memory limits, idle timeouts, process identity
  • .NET Framework Version: Set which .NET version to use
  • Managed Pipeline Mode: Integrated vs Classic mode
💡 Tip: Recycling an app pool is often faster than restarting IIS and fixes many issues

Sites

🌐 Default Web Site

What it is: The default website that comes with IIS (usually on port 80)

What you can do:

  • Browse: Open the website in a browser
  • Stop/Start: Control the website
  • Bindings: Change ports, add SSL, configure domains
  • Physical Path: Set where files are stored (usually C:\inetpub\wwwroot)

📁 Applications (under sites)

What it is: Virtual directories that can have their own settings

What you can do:

  • Set different authentication methods
  • Assign to different application pools
  • Configure separate connection strings

Server-Level Items

🔒 Server Certificates

What it is: SSL/TLS certificates for HTTPS

What you can do: Import, export, request, and manage SSL certificates

Center Panel: Features View

The features shown depend on what you've selected in the Connections tree. Here's what you'll see:

Authentication Features

🔐 Authentication

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

⚠️ Disable authentication methods you don't need for security

🛡️ Authorization Rules

What it does: Control who can access your site/application

Options: Allow/deny specific users, groups, or everyone

Content Features

📄 Default Document

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

📂 Directory Browsing

What it does: Shows folder contents when no default document exists

⛔ Security Risk: Usually should be DISABLED in production

❌ Error Pages

What it does: Configure custom error pages (404, 500, etc.)

Options: Show detailed errors, custom error pages, or simple messages

Performance & Caching

⚡ Output Caching

What it does: Cache page content to improve performance

When to use: For content that doesn't change frequently

🗜️ Compression

What it does: Compress responses to reduce bandwidth

Types: Static compression (files) and dynamic compression (generated content)

Security Features

🔒 SSL Settings

What it does: Configure HTTPS requirements

Options:

  • Require SSL: Force HTTPS
  • Client Certificates: Require/accept/ignore client certs

🛡️ Request Filtering

What it does: Block dangerous requests

Can block: File extensions, large requests, specific characters

Monitoring & Logging

📊 Logging

What it does: Record website access and errors

Log formats: IIS, W3C, NCSA

Default location: C:\inetpub\logs\LogFiles

🔍 Failed Request Tracing

What it does: Detailed logging for troubleshooting slow or failed requests

When to use: When debugging performance or error issues

Development Features

🔄 URL Rewrite

What it does: Redirect or rewrite URLs

Examples: Remove .html extensions, redirect HTTP to HTTPS

💡 Requires URL Rewrite module to be installed

📝 HTTP Response Headers

What it does: Add custom headers to responses

Common uses: Security headers, cache control, CORS

📋 MIME Types

What it does: Tell browsers how to handle different file types

Example: .pdf files should be treated as application/pdf

Right Panel: Actions Pane

The Actions pane changes based on what you've selected. Here are the most common actions:

Server Actions

🔄 Restart IIS

What it does: Completely restarts the IIS service

⚠️ This affects ALL websites on the server

Site Actions

▶️ Start/Stop

What it does: Control individual websites

When stopped: Website returns "Service Unavailable"

🌐 Browse Website

What it does: Opens the website in your default browser

Options: Browse on different ports if configured

🔗 Bindings

What it does: Configure how people access your site

Settings:

  • Protocol: HTTP or HTTPS
  • Port: Usually 80 (HTTP) or 443 (HTTPS)
  • Host name: Domain name (www.example.com)
  • SSL Certificate: For HTTPS sites

Application Pool Actions

♻️ Recycle

What it does: Restarts the application pool (recommended first troubleshooting step)

Impact: Less disruptive than full IIS restart

⚙️ Advanced Settings

Key settings:

  • Identity: Which user account runs the app
  • Memory Limit: Maximum RAM usage
  • Idle Timeout: When to shut down if inactive
  • Recycling Conditions: When to automatically restart

Common Tasks & Workflows

Troubleshooting Website Issues

Step 1: Check if site is running

Connections → Sites → Your Site → Check if "Started" in Actions pane

Step 2: Recycle Application Pool

Connections → Application Pools → Find your pool → Recycle

Step 3: Check error logs

Features → Logging → View log files (usually C:\inetpub\logs\LogFiles)

Step 4: Enable detailed errors (temporarily)

Features → Error Pages → Edit Feature Settings → Detailed errors

Setting Up HTTPS

Step 1: Install SSL Certificate

Server Certificates → Import or Request certificate

Step 2: Add HTTPS Binding

Site → Bindings → Add → HTTPS, Port 443, Select certificate

Step 3: Force HTTPS (optional)

Site → SSL Settings → Require SSL

Creating a New Website

Step 1: Create Application Pool

Application Pools → Add Application Pool → Set .NET version

Step 2: Create Site

Sites → Add Website → Set name, physical path, port

Step 3: Configure Bindings

Site → Bindings → Add domain names, SSL if needed

Common Issues & Solutions

🔴 Website Shows "Service Unavailable"

Causes:

  • Application pool is stopped → Start it
  • Application pool keeps crashing → Check Event Viewer
  • Wrong .NET version → Check app pool settings

🔴 "Cannot Connect" or Timeout

Causes:

  • Website is stopped → Start it
  • Wrong port → Check bindings
  • Firewall blocking → Check Windows Firewall
  • IIS not running → Start World Wide Web Publishing Service

🔴 404 Errors

Causes:

  • File doesn't exist → Check physical path
  • Wrong default document → Configure Default Document
  • URL rewrite issues → Check URL Rewrite rules

🔴 500 Internal Server Error

Troubleshooting:

  • Enable detailed errors temporarily
  • Check Event Viewer → Windows Logs → Application
  • Check IIS logs
  • Enable Failed Request Tracing

Emergency Commands & Methods

When IIS Manager won't open or is unresponsive, use these methods:

🚨 Complete IIS Restart

PowerShell/Command Prompt (as Admin):

  • iisreset - Restart everything
  • iisreset /stop - Stop IIS
  • iisreset /start - Start IIS
  • iisreset /restart - Restart with timeout

GUI Method:

  • Services.msc → Find "World Wide Web Publishing Service"
  • Right-click → Restart
  • Also restart "Windows Process Activation Service" if present
⚠️ Affects ALL websites on the server

🔧 Individual Service Control

PowerShell Commands:

  • Stop-Service W3SVC -Force - Stop web service
  • Start-Service W3SVC - Start web service
  • Restart-Service W3SVC -Force - Restart web service
  • Stop-Service WAS -Force - Stop activation service
  • Start-Service WAS - Start activation service

Command Prompt:

  • net stop w3svc - Stop web service
  • net start w3svc - Start web service
  • net stop was /y - Stop activation service
  • net start was - Start activation service

GUI Method:

  • Task Manager → Services tab → Find W3SVC
  • Right-click → Start/Stop/Restart
  • Or: Control Panel → Administrative Tools → Services

♻️ Application Pool Emergency Control

PowerShell (requires WebAdministration module):

  • Import-Module WebAdministration
  • Restart-WebAppPool "DefaultAppPool" - Recycle specific pool
  • Stop-WebAppPool "DefaultAppPool" - Stop pool
  • Start-WebAppPool "DefaultAppPool" - Start pool
  • Get-WebAppPoolState "DefaultAppPool" - Check status

AppCmd (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:

  • IIS Manager → Application Pools → Right-click pool → Recycle/Stop/Start

🌐 Website Emergency Control

PowerShell:

  • Stop-WebSite "Default Web Site" - Stop website
  • Start-WebSite "Default Web Site" - Start website
  • Get-WebSite - List all websites and status

AppCmd:

  • %windir%\system32\inetsrv\appcmd stop site "Default Web Site"
  • %windir%\system32\inetsrv\appcmd start site "Default Web Site"
💀 Nuclear Option - Process Kill:
If nothing else works:
taskkill /f /im w3wp.exe - Kill all IIS worker processes
taskkill /f /im inetinfo.exe - Kill IIS admin process
Then restart services manually

Pro Tips - How To Actually Do Them

💡 Always try recycling app pools before full IIS restart

PowerShell Method:

  • Import-Module WebAdministration
  • Get-WebAppPoolState -Name "YourAppPool" - Check status first
  • Restart-WebAppPool -Name "YourAppPool" - Recycle it

GUI Method:

  • IIS Manager → Application Pools
  • Find your app pool → Right-click → Recycle
  • Check Status column shows "Started"

Why this works: Clears memory leaks, reloads configuration, much faster than full restart

🔒 Keep detailed error pages disabled in production

PowerShell Method:

  • Set-WebConfigurationProperty -Filter "system.webServer/httpErrors" -Name "errorMode" -Value "Custom" -PSPath "IIS:\Sites\Default Web Site"

GUI Method:

  • IIS Manager → Sites → Your Site → Error Pages
  • Actions → Edit Feature Settings
  • Select "Custom error pages" or "Detailed errors for local requests only"
  • Never select "Detailed errors" for production

Why: Detailed errors expose server information to attackers

📊 Check Event Viewer for detailed error information

PowerShell Method:

  • Get-EventLog -LogName Application -Source "*IIS*" -Newest 10 - Recent IIS events
  • Get-EventLog -LogName System -Source "*W3SVC*" -Newest 10 - Web service events
  • Get-WinEvent -FilterHashtable @{LogName="Application"; Level=2} -MaxEvents 10 - Recent errors

GUI Method:

  • eventvwr.msc → Windows Logs → Application
  • Filter by Source: contains "IIS" or "ASP.NET"
  • Look for Error and Warning levels
  • Also check: Windows Logs → System for service issues

Key sources to look for: ASP.NET, IIS-W3SVC, WAS, IIS Express

🔍 Use Failed Request Tracing for complex issues

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:

  • IIS Manager → Sites → Your Site → Failed Request Tracing Rules
  • Actions → Add → All content (*)
  • Set status codes: 400-599 (all errors)
  • Set time taken: 00:00:30 (30 seconds)
  • Check all Trace Providers
  • Enable in Features: Failed Request Tracing → Actions → Edit Feature Settings

View results: C:\inetpub\logs\FailedReqLogFiles\ - Open .xml files in browser

💾 Back up IIS configuration before making major changes

PowerShell Method:

  • Backup-WebConfiguration -Name "BeforeChanges_$(Get-Date -Format 'yyyyMMdd_HHmm')"
  • Get-WebConfigurationBackup - List backups
  • Restore-WebConfiguration -Name "YourBackupName" - Restore

Manual Method:

  • Copy entire folder: C:\Windows\System32\inetsrv\config\
  • Key files: applicationHost.config, administration.config
  • Also backup: C:\inetpub\wwwroot\web.config (if exists)

GUI Method:

  • IIS Manager → Server Name → Configuration Editor
  • Actions → Generate Script → Choose backup option
  • Or use appcmd: %windir%\system32\inetsrv\appcmd add backup "BackupName"
🎯 Quick Reference:
• Emergency restart: iisreset
• Recycle app pool: Restart-WebAppPool "PoolName"
• Check errors: Get-EventLog -LogName Application -Source "*IIS*"
• Backup config: Backup-WebConfiguration -Name "BackupName"