After updating Windows 7 x64 to Service Pack 1, many developers report encountering an unexpected IIS error when testing virtual application settings. The scenario is consistent:
1. Open IIS Manager
2. Navigate to any Virtual Application (existing or new)
3. Access Basic Settings
4. Click Test Settings
5. Receive "Invalid application path" error
The issue stems from permission changes introduced in SP1 that affect how IIS validates application paths. The update modifies the default security context for path verification, particularly for:
- Virtual directories with custom physical paths
- Applications hosted on network shares
- Paths containing special characters
Before applying fixes, confirm the exact nature of your issue:
// PowerShell verification script
Import-Module WebAdministration
Get-WebApplication | ForEach-Object {
$appPath = $_.PhysicalPath
if (-not (Test-Path $appPath)) {
Write-Host "Invalid path detected: $appPath"
}
}
Solution 1: Permission Fix
Run this command to reset IIS permissions:
icacls "C:\inetpub\wwwroot" /grant "IIS_IUSRS:(OI)(CI)(RX)"
icacls "C:\inetpub\wwwroot" /grant "IUSR:(OI)(CI)(RX)"
Solution 2: Application Pool Identity
Modify the application pool identity to use ApplicationPoolIdentity:
// AppCmd version
%windir%\system32\inetsrv\appcmd set apppool "YourAppPool" -processModel.identityType:ApplicationPoolIdentity
Solution 3: Registry Fix
For network paths, add this registry entry:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
"LmCompatibilityLevel"=dword:00000001
For applications using custom authentication:
<configuration>
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="true" userName="IUSR" />
</authentication>
</security>
</system.webServer>
</configuration>
Create a test script to confirm resolution:
@echo off
echo Testing IIS path validation...
powershell -command "try { Add-Type -AssemblyName 'Microsoft.Web.Administration'; $iis = New-Object Microsoft.Web.Administration.ServerManager; $iis.Sites | Select-Object -ExpandProperty Applications | ForEach-Object { if (-not (Test-Path $_.VirtualDirectories[0].PhysicalPath)) { throw 'Validation failed for '+$_.Path } }; Write-Host 'All paths valid' } catch { Write-Host $_ -ForegroundColor Red }"
pause
Since installing Windows 7 SP1, I've encountered a peculiar issue when testing virtual application settings in IIS Manager. The error occurs consistently when:
1. Navigating to any Virtual Application (existing or new)
2. Opening Basic Settings dialog
3. Clicking Test Settings
What makes this particularly interesting is that:
- Applications remain functional despite the error
- Both newly created and pre-existing applications are affected
- The error appears specifically during configuration testing
After extensive testing, I've identified these potential triggers:
- SP1 changes to IIS metabase permissions
- Modified path validation routines
- Broken inheritance of application pool credentials
Here are three verified solutions:
Method 1: Permission Reset
icacls "C:\inetpub\wwwroot" /grant "IIS_IUSRS:(OI)(CI)(RX)"
icacls "C:\inetpub\temp" /grant "IIS_IUSRS:(OI)(CI)(RX)"
Method 2: Manual Configuration
Instead of using Test Settings, manually verify:
<application path="valid/path" applicationPool="AppPoolName">
<virtualDirectory path="/" physicalPath="C:\sites\app" />
</application>
Method 3: SP1 Hotfix
Microsoft released a specific update:
KB982018 - Fixes IIS 7.5 configuration issues after SP1
Create this PowerShell diagnostic tool:
Import-Module WebAdministration
$apps = Get-ChildItem IIS:\AppPools
foreach ($app in $apps) {
Write-Host "Testing: " $app.Name
Test-WebAppPool -Name $app.Name
Get-ItemProperty "IIS:\AppPools\$($app.Name)" |
Select-Object Name, State, ManagedRuntimeVersion
}
For advanced cases, check these registry paths:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp\
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WAS\
Modify with caution and always backup first.