When working with IIS 7.5, you'll notice log files are stored in folders named W3SVC followed by a number (e.g., W3SVC1, W3SVC2) under C:\inetpub\logs\LogFiles
. Unlike IIS 6.0 which displayed this mapping clearly, IIS 7.5 requires a different approach to match websites with their corresponding W3SVC IDs.
The most efficient way is to use IIS's built-in command line tool:
%windir%\system32\inetsrv\appcmd.exe list site
This will output all sites with their IDs in format:
SITE "Default Web Site" (id:1,bindings:http/*:80:,state:Started) SITE "Marketing Site" (id:3,bindings:http/*:8080:,state:Started)
The id value directly corresponds to the W3SVC folder number.
For those preferring PowerShell, try this script:
Import-Module WebAdministration Get-ChildItem IIS:\Sites | Select-Object Name, ID
Output example:
Name ID ---- -- Default Web Site 1 API Services 2 Blog 3
If you need this in an application, use ServerManager API:
using Microsoft.Web.Administration; var serverManager = new ServerManager(); foreach (var site in serverManager.Sites) { Console.WriteLine($"Site: {site.Name}, ID: {site.Id}"); }
Once you have the ID, you can verify the corresponding log folder contains data for your site:
dir C:\inetpub\logs\LogFiles\W3SVC3\*.log
Check the log entries match your site's domain or IP in the cs-host
field.
- Don't confuse Application Pool IDs with Site IDs
- Recycled sites maintain their original W3SVC ID
- The ID remains consistent even if you stop/start the site
In IIS 7.5, website logs are stored in individual folders named W3SVC[ID] under C:\inetpub\logs\LogFiles
. Each numeric ID corresponds to a specific website in IIS, but this mapping isn't directly visible in the IIS Manager interface.
The most reliable way to find the mapping is through the command line:
C:\Windows\System32\inetsrv\appcmd.exe list site /text:site.id
This will output all sites with their corresponding IDs. For more detailed information including site names:
C:\Windows\System32\inetsrv\appcmd.exe list site
Example output:
SITE "Default Web Site" (id:1, bindings:http/*:80:, state:Started)
SITE "Marketing Site" (id:3, bindings:http/*:8080:, state:Started)
For servers with PowerShell available, you can use:
Import-Module WebAdministration
Get-ChildItem IIS:\Sites | Select-Object Name, ID
Or alternatively:
Get-Website | Format-Table Name, ID, State, PhysicalPath -AutoSize
The mappings are also stored in the Windows Registry:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009" /v Counter
Note that this method shows performance counters and requires parsing to find the relevant W3SVC entries.
Imagine you have a website called "E-Commerce Platform" showing 404 errors. Here's how you'd find its logs:
- Run:
appcmd list site "E-Commerce Platform" /text:site.id
- If it returns "4", navigate to
W3SVC4
folder - Use PowerShell to parse recent errors:
Select-String -Path "C:\inetpub\logs\LogFiles\W3SVC4\*.log" -Pattern "404"
For frequent log checking, consider creating a batch script:
@echo off
set siteName="Your Site Name"
for /f "tokens=3 delims= " %%i in ('appcmd list site %siteName% ^| find "id:"') do set siteID=%%i
echo Logs for %siteName% are in W3SVC%siteID%
pause
- Site IDs persist across IIS restarts but may change if sites are deleted and recreated
- Always use elevated command prompt (Run as Administrator)
- For clustered environments, IDs may differ between servers