When attempting to start the Windows Process Activation Service (WAS) on Windows 10, you'll encounter a series of interrelated errors:
Event ID 5215: WAS failed to execute initialization for offline setup (Data: 50000780)
Event ID 5005: WAS stopping due to error (Data: 50000780)
Event ID 7023: WAS terminated with "The file exists" error
Event ID 7001: W3SVC dependency failure due to WAS startup failure
Using Process Monitor (after extracting the 64-bit version), we identified the culprit file:
C:\Windows\System32\inetsrv\Config\applicationhost.config.tmp
Deleting this temporary file allowed the process to progress further, but revealed new errors:
WAS 5215 with data field: 0D000780
Service Control Manager 7023: "The data is invalid"
The IIS setup log reveals critical cryptographic container issues:
[01/13/2018 23:10:42] < !!FAIL!! > Failed to create the NetFrameworkConfigurationKey key container (result=0x8009000f)
[03/18/2018 07:44:56] < !!FAIL!! > Failed to create the iisWasKey key container (result=0x8009000f)
To resolve cryptographic key container permission issues:
1. Navigate to C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
2. Locate files named d6d986f09a1ee04e24c949879fdb506c_*
3. Take ownership as Administrators
4. Grant Full Control permissions
5. Move or delete problematic files
For systematic troubleshooting, run this PowerShell script:
# Check WAS service status
Get-Service -Name WAS
# Repair cryptographic permissions
$machineKeys = "$env:ProgramData\Microsoft\Crypto\RSA\MachineKeys"
$acl = Get-Acl $machineKeys
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
"IIS_IUSRS",
"FullControl",
"ContainerInherit,ObjectInherit",
"None",
"Allow")
$acl.AddAccessRule($rule)
Set-Acl -Path $machineKeys -AclObject $acl
# Clean temporary IIS config files
Remove-Item "$env:windir\System32\inetsrv\Config\*.tmp" -Force -ErrorAction SilentlyContinue
After performing these steps:
- Run
net start WAS
in elevated command prompt - Verify IIS starts successfully (
net start W3SVC
) - Check Event Viewer for new entries
- Validate that
iis.log
shows successful key container creation
When attempting to start the Windows Process Activation Service (WAS) on Windows 10, you might encounter a series of errors in the System log:
WAS 5215: The Windows Process Activation Service (WAS) failed to execute initialization for offline setup. [Data field: 50000780]
WAS 5005: Windows Process Activation Service (WAS) is stopping because it encountered an error. [Data field: 50000780]
Service Control Manager 7023: The WAS service terminated with the following error: The file exists.
Service Control Manager 7001: The W3SVC service depends on the WAS service which failed to start...
Using Process Monitor (ProcMon), we identified that the service was failing due to a temporary configuration file:
C:\Windows\System32\inetsrv\Config\applicationhost.config.tmp
After removing this file, the error message changes to:
WAS 5215: [Data field: 0D000780]
Service Control Manager 7023: The Windows Process Activation Service service terminated with the following error: The data is invalid.
The IIS log reveals more fundamental issues with cryptographic key containers:
[01/13/2018 23:10:42] < !!FAIL!! > Failed to create the NetFrameworkConfigurationKey key container (result=0x8009000f)
[03/18/2018 07:44:56] < !!FAIL!! > Failed to create the iisWasKey key container (result=0x8009000f)
Here's the step-by-step resolution process:
1. Remove the cryptographic key container files
Navigate to:
C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\
Look for files named d6d986f09a1ee04e24c949879fdb506c_*
and remove them after taking ownership:
takeown /f "d6d986f09a1ee04e24c949879fdb506c_*"
icacls "d6d986f09a1ee04e24c949879fdb506c_*" /grant Administrators:F
del "d6d986f09a1ee04e24c949879fdb506c_*"
2. Recreate the key containers
You can use PowerShell to recreate the necessary cryptographic containers:
# Remove existing containers if they exist
Remove-CmsMessage -RecipientType PublicKey -RecipientInfo (Get-CmsMessage | Where-Object {$_.RecipientInfo.Subject -like "*NetFrameworkConfigurationKey*"})
Remove-CmsMessage -RecipientType PublicKey -RecipientInfo (Get-CmsMessage | Where-Object {$_.RecipientInfo.Subject -like "*iisWasKey*"})
# Reinitialize IIS cryptographic components
Start-Process -FilePath "$env:windir\system32\inetsrv\iissetup.exe" -ArgumentList "/install SharedLibraries /nano" -Wait
After performing these steps:
- Check the IIS log for successful operations:
- Attempt to start the WAS service:
- Verify dependent services:
Created NetFrameworkConfigurationKey key container
Created NetFrameworkConfigurationKey user key
Set ACLs on NetFrameworkConfigurationKey
net start was
net start w3svc
To avoid similar issues in the future:
# Create a scheduled task to verify WAS health weekly
$action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-Command "if ((Get-Service -Name WAS).Status -ne 'Running') { Start-Service WAS }"'
$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Sunday -At 3am
Register-ScheduledTask -TaskName "WAS Health Check" -Action $action -Trigger $trigger -User "SYSTEM"
Additionally, consider implementing this monitoring script:
# PowerShell monitoring script for WAS
$service = Get-Service -Name WAS
$cryptoPath = "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys"
if ($service.Status -ne "Running") {
Write-EventLog -LogName "Application" -Source "WAS Monitor" -EventId 1001 -EntryType Warning -Message "WAS service is not running"
# Check for problematic files
if (Test-Path "$env:windir\system32\inetsrv\Config\applicationhost.config.tmp") {
Remove-Item "$env:windir\system32\inetsrv\Config\applicationhost.config.tmp" -Force
}
# Restart the service
Start-Service -Name WAS
}
If issues persist, consider these advanced steps:
# Full IIS reset with cryptographic component reinstallation
Stop-Service W3SVC -Force
Stop-Service WAS -Force
# Reinstall IIS cryptographic components
& "$env:windir\system32\inetsrv\iissetup.exe" /uninstall SharedLibraries
& "$env:windir\system32\inetsrv\iissetup.exe" /install SharedLibraries
# Rebuild configuration
& "$env:windir\system32\inetsrv\appcmd.exe" list config /xml | & "$env:windir\system32\inetsrv\appcmd.exe" restore config /in
Start-Service WAS
Start-Service W3SVC