html
Windows Server 2012 R2 administrators frequently encounter roadblocks when enabling .NET Framework 3.5 through conventional methods. The most common symptoms include:
- GUI installer failing with generic "role service installation failed" messages
- DISM commands returning error code 0x800f0906
- Source file download failures despite having local installation media
The root causes typically involve:
1. WSUS configuration conflicts (even when not explicitly configured)
2. Windows Update service restrictions
3. Missing or corrupted installation source files
4. Group Policy settings overriding source paths
Method 1: Forced Local Installation via DISM
Mount your Windows Server 2012 R2 ISO and execute:
dism /online /enable-feature /featurename:NetFX3 /all /LimitAccess /Source:D:\sources\sxs
The /LimitAccess
parameter is crucial to prevent Windows Update attempts.
Method 2: Registry Workaround for WSUS Conflicts
Create a PowerShell script to temporarily bypass update servers:
$registryPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU"
Set-ItemProperty -Path $registryPath -Name UseWUServer -Value 0
Restart-Service -Name wuauserv
dism /online /enable-feature /featurename:NetFX3 /all
Set-ItemProperty -Path $registryPath -Name UseWUServer -Value 1
Restart-Service -Name wuauserv
When standard methods fail, dig deeper with these commands:
# Check for pending updates that might block installation
dism /online /cleanup-image /scanhealth
# Verify feature state
dism /online /get-featureinfo /featurename:NetFX3
# Check component store corruption
sfc /scannow
If you lack installation media, download the standalone package:
# For x64 systems:
Invoke-WebRequest -Uri "https://download.microsoft.com/download/7/0/3/703455ee-a747-4cc8-bd3e-98a615c3aedb/dotNetFx35setup.exe" -OutFile "$env:TEMP\dotnet35.exe"
Start-Process -FilePath "$env:TEMP\dotnet35.exe" -ArgumentList "/quiet /norestart" -Wait
Key log locations to investigate:
C:\Windows\Logs\CBS\CBS.log
C:\Windows\Logs\DISM\dism.log
Get-WinEvent -LogName "Microsoft-Windows-DISM/Operational" | Where-Object {$_.Id -eq 1}
Many Windows Server 2012 R2 administrators encounter the frustrating 0x800f0906 error when trying to install .NET Framework 3.5. This legacy framework remains crucial for running older applications, yet Microsoft's default installation methods often fail.
The root cause typically stems from Windows Update dependencies and source file accessibility. When the server can't access required installation files, both GUI and DISM methods fail with similar errors.
Method 1: DISM with Local Installation Media
Mount your Windows Server 2012 R2 ISO or insert the installation DVD, then run:
dism.exe /online /enable-feature /featurename:NetFX3 /all /Source:D:\sources\sxs /LimitAccess
Method 2: Group Policy Configuration
For domain-joined servers, configure these policies:
gpedit.msc → Computer Configuration → Administrative Templates → System
→ Specify settings for optional component installation and component repair
→ Enabled → Alternate source file path: \\fileserver\share\sxs
Method 3: Manual CAB File Installation
Download the Microsoft-Windows-NetFx3-OnDemand-Package.cab file and use:
dism.exe /online /add-package /packagepath:C:\temp\Microsoft-Windows-NetFx3-OnDemand-Package.cab
Check these critical points when installations fail:
- Verify Windows Update service is running
- Ensure sufficient disk space (minimum 5GB free)
- Check DISM log at C:\Windows\Logs\DISM\dism.log
- Remove problematic updates KB2966826 and KB2966828 if present
When all else fails, use the offline installer package:
dotnetfx35.exe /q /norestart /log:C:\temp\dotnet35_install.log
Confirm successful installation with:
Get-WindowsFeature NET-Framework-Core | Select InstallState