Windows Update Errors

0x800f0950 .NET Feature Fails to Install: DISM Commands That Help

If you’re seeing the 0x800F0950 error when trying to install .NET features on Windows 10 or Windows 11, you’re not alone. This Windows servicing error commonly appears when enabling .NET Framework 3.5 (includes .NET 2.0 and 3.0) via “Turn Windows features on or off,” when an app prompts to install .NET 3.5, or when installing/repairing .NET 4.8/4.8.1 runtime updates. Because many games, legacy enterprise apps, and developer tools depend on .NET, fixing the 0x800F0950 .NET installation failure is critical to restoring functionality.

This guide goes beyond generic advice. You’ll get a deep, step-by-step playbook focused on DISM commands that actually work, plus advanced diagnostics for stubborn cases, and prevention tips that help you avoid 0x800F0950 in the future.

Understanding the Error
The 0x800F0950 error is a Windows servicing (CBS) error returned when the operating system cannot complete a feature enablement or package installation. In plain terms, Windows can’t find or validate everything it needs to add the .NET feature, or the servicing stack runs into a state or policy that blocks it.

What it usually means:

  • The on-demand feature payload (the .NET 3.5 files) isn’t available locally and Windows can’t download it.
  • Your system’s servicing store (WinSxS) is out-of-sync or corrupted.
  • WSUS or Group Policy is blocking the download of optional components (.NET features).
  • The ISO/source used to install .NET doesn’t match your Windows edition, build, or language.
  • A pending update/reboot or outdated servicing stack is preventing installation.

Common scenarios when you’ll see it:

  • Enabling “.NET Framework 3.5 (includes .NET 2.0 and 3.0)” via Optional Features or app prompts.
  • Offline or metered connections where Windows can’t reach Windows Update for the .NET payload.
  • Corporate/WSUS environments where Group Policy disallows downloading optional components from the internet.
  • After OS upgrades or cumulative updates, when the component store requires repair or refresh.
  • Attempting .NET 4.8/4.8.1 runtime install/repair where a previous partial install left the system in a pending state.

Quick Reference Table
Cause | Symptom | Recommended Fix
—|—|—
Missing .NET 3.5 payload (no internet or blocked by policy) | 0x800F0950 when enabling NetFx3; “The changes could not be completed.” | Use DISM with a matching ISO Source:\sources\sxs and /LimitAccess; or enable policy to download from Windows Update.
WSUS/Group Policy blocking optional components | Error persists on corporate networks | Enable Group Policy “Specify settings for optional component installation…” and allow download from Windows Update; or stage a local SxS source.
Component store corruption or pending operations | DISM/SFC errors; repeated feature failures | Run SFC and DISM /RestoreHealth; reboot; retry. Consider StartComponentCleanup.
Outdated servicing stack / missing latest cumulative update | Install fails until system fully updated | Install latest SSU/LCU via Windows Update or Microsoft Update Catalog; reboot; retry.
Language/edition/build mismatch between OS and ISO | DISM with /Source fails | Use a matching Windows ISO (same edition, version/build, and language) for the SxS source.
Windows Update cache corruption | Update failures and feature adds fail | Reset Windows Update components (stop services, rename SoftwareDistribution & Catroot2, restart services).
.NET 4.8/4.8.1 runtime issues | Modern apps fail; 4.x installer exits with error | Download the official offline installer; run repair; ensure TLS and certificates are valid; check logs if needed.
Network/proxy/TLS issues | Online enablement hangs or fails | Ensure correct date/time; verify TLS and proxy settings; disable metered connection; try wired connection.
Insufficient disk space or temp folder issues | Installer aborts | Free disk space, clear temp files, retry.

Note: If you see related codes like 0x800F081F (source files not found) or 0x800F0922 (update/partition issues), many steps below still apply, but 0x800F0950 is especially tied to missing payload/policy and servicing store state.

Common Causes

  • Missing .NET 3.5 payload (Feature on Demand) and no internet access
  • WSUS/Group Policy blocking optional component download
  • Component store corruption (WinSxS) or pending reboot/updates
  • Outdated Servicing Stack Update (SSU) or Cumulative Update (LCU)
  • Language/edition/build mismatch between OS and source ISO
  • Windows Update cache corruption (SoftwareDistribution/Catroot2 issues)
  • Network, proxy, or TLS protocol problems
  • Insufficient disk space or temp directory issues
  • For .NET 4.8/4.8.1, partial installs, certificate trust, or outdated OS servicing stack

Preliminary Checks
Before diving into advanced steps, perform these quick checks.

  1. Optional: Boot to Safe Mode (for cleanup tasks)
  • Note: Enabling Windows features like .NET is typically blocked in Safe Mode because the Windows Modules Installer service is restricted. Use Safe Mode only for cleanup and repair steps (SFC/DISM, cache resets), then reboot to normal mode to install .NET.
  • How to boot to Safe Mode:
    • Settings > System > Recovery > Advanced startup > Restart now > Troubleshoot > Advanced options > Startup Settings > Restart. Press 4 (Safe Mode) or 5 (Safe Mode with Networking).
    • Or hold Shift while selecting Restart from the Start menu.
  1. Back up important data
  • Before servicing the OS, ensure you have a current backup of important files or a system restore point.
  1. Run basic health checks
    Open an elevated Command Prompt (Run as administrator) and run:
  • Check file system integrity:
    chkdsk C: /scan
  • System File Checker:
    sfc /scannow
  • Repair the Windows component store:
    DISM /Online /Cleanup-Image /RestoreHealth
See also  0x80242016 Download/Install Failures: Service Reset That Actually Works

Reboot after SFC/DISM if they report repairs, then attempt the .NET install again.

Step-by-Step Troubleshooting
Follow these steps in order, from easiest to most reliable. The central theme is using DISM correctly to install .NET, plus clearing policies and repairing servicing where needed.

  1. Confirm what you actually need
  • .NET Framework 3.5 (NetFx3) is a Windows feature. It requires Feature on Demand payloads from Windows Update or a local SxS source.
  • .NET Framework 4.8/4.8.1 is part of the OS in Win11 and late Win10 builds; you repair/update it via Windows Update or its offline installer.
  • Check current feature status (elevated PowerShell):
    Get-WindowsOptionalFeature -Online -FeatureName NetFx3
  • Or with DISM:
    DISM /Online /Get-Features /Format:Table | findstr /i netfx
  1. Try the built-in GUI first (simple cases)
  • Press Win+R, type: optionalfeatures, press Enter.
  • Check “.NET Framework 3.5 (includes .NET 2.0 and 3.0)”, click OK. Let it download/install.
  • If it fails with 0x800F0950, proceed to DISM.
  1. Enable .NET 3.5 with DISM (online)
  • Use this first when you have reliable internet:
    DISM /Online /Enable-Feature /FeatureName:NetFx3 /All
  • If this works, you’re done. If it fails, note the error and continue.
  1. Enable .NET 3.5 with a matching Windows ISO (offline source)
    This is the most reliable method when the payload cannot be downloaded or policies block it.
  • Obtain a Windows ISO that matches your system exactly:

    • Same OS version/build (e.g., Windows 11 23H2, Windows 10 22H2)
    • Same edition (Home/Pro/Enterprise)
    • Same language
    • Best source: Media Creation Tool or Volume Licensing Service Center.
  • Mount the ISO (right-click > Mount). Note the drive letter (e.g., D:).

  • Run elevated Command Prompt:
    DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:D:\sources\sxs

  • Replace D: with your ISO’s mounted drive letter.

Tips:

  • /LimitAccess tells DISM not to contact Windows Update (useful in WSUS/offline environments).
  • If you still get 0x800F0950, confirm the ISO truly matches your OS. A mismatch is the top cause of failure here.

PowerShell equivalent:
Enable-WindowsOptionalFeature -Online -FeatureName NetFx3 -All -LimitAccess -Source D:\sources\sxs

  1. Allow optional component download via Group Policy (WSUS/corporate)
    If your PC is joined to a domain or WSUS is configured, policy may block .NET 3.5 payload downloads.
  • Open Local Group Policy Editor: gpedit.msc
  • Navigate: Computer Configuration > Administrative Templates > System
  • Open “Specify settings for optional component installation and component repair”
  • Set to Enabled, and check “Download repair content and optional features directly from Windows Update instead of Windows Server Update Services (WSUS)”
  • Apply, OK, then update policy:
    gpupdate /force
  • Retry:
    DISM /Online /Enable-Feature /FeatureName:NetFx3 /All

Note: In enterprise environments, coordinate with IT. You may need a local SxS source or a WSUS configuration change.

  1. Reset Windows Update components (fix cache/state issues)
    If the Windows Update engine or its cache is broken, components and features can fail with 0x800F0950.

Run the following in an elevated Command Prompt:

  • Stop services:
    net stop wuauserv
    net stop cryptSvc
    net stop bits
    net stop msiserver

  • Rename cache folders:
    ren C:\Windows\SoftwareDistribution SoftwareDistribution.old
    ren C:\Windows\System32\catroot2 Catroot2.old

  • Optional: Re-register core update DLLs (safe to skip on newer builds):
    regsvr32 /s wuaueng.dll
    regsvr32 /s wuapi.dll
    regsvr32 /s wups.dll
    regsvr32 /s wups2.dll
    regsvr32 /s wucltux.dll
    regsvr32 /s wuwebv.dll

  • Start services:
    net start wuauserv
    net start cryptSvc
    net start bits
    net start msiserver

Reboot, then try the DISM enablement again (Step 3 or 4).

  1. Install the latest SSU/LCU and reboot
  • Open Settings > Windows Update > Check for updates. Install everything pending (especially Servicing Stack Updates and Cumulative Updates). Reboot.
  • Alternatively, download the latest SSU/LCU for your version from the Microsoft Update Catalog. Install SSU first (if separate), then LCU. Reboot.
  • Try the .NET enablement again.
  1. Clear pending operations and clean the component store (advanced)
  • Start component cleanup:
    DISM /Online /Cleanup-Image /StartComponentCleanup
  • Reboot and retry installation.
  • If you’ve had multiple failed attempts, repeat SFC and DISM restore health:
    sfc /scannow
    DISM /Online /Cleanup-Image /RestoreHealth
See also  0x80070422 Windows Update Service Disabled: How to Re-Enable Safely

Caution: Avoid deleting C:\Windows\WinSxS\pending.xml unless directed by Microsoft documentation. Removing it can cause system instability. Prefer reboots and the servicing commands above.

  1. Repair or install .NET 4.8/4.8.1 (if your app needs 4.x)
  • Download the official .NET Framework 4.8/4.8.1 offline installer from Microsoft.
  • Right-click > Run as administrator.
  • Choose Repair (if present), or install.
  • If it fails, check:
    • Correct system date/time and time zone.
    • TLS 1.2 is enabled.
    • No restrictive proxy blocking certificate validation.
    • Windows is up to date (Step 7).
  1. Fix language/edition/build mismatches
  • If DISM with /Source fails:
    • Confirm your ISO matches OS build: winver for version/build.
    • Confirm language: Settings > Time & language > Language & region.
    • For multi-language systems, install the matching language pack before enabling .NET 3.5, or use an ISO for your display language.
  1. Network and proxy checks
  • Ensure you’re not on a metered connection:
    Settings > Network & Internet > your network > set Metered connection Off.
  • Check WinHTTP proxy:
    netsh winhttp show proxy
    If a proxy is listed and not required, reset:
    netsh winhttp reset proxy
  • Try a wired connection or different network.
  1. In-place repair upgrade (last resort but highly effective)
  • Download the latest Windows ISO for your installed version.
  • Mount the ISO and run setup.exe.
  • Choose “Keep personal files and apps.”
  • Let the repair install complete. This refreshes the servicing stack and component store without wiping your data.
  • After reboot, enable .NET 3.5:
    DISM /Online /Enable-Feature /FeatureName:NetFx3 /All
  • This resolves stubborn 0x800F0950 cases tied to deep servicing inconsistencies.

Log and Trace Analysis (instead of minidumps)
For this error, Windows servicing logs are more relevant than BSOD minidumps.

Where to look:

  • CBS.log (Component-Based Servicing):
    • Path: C:\Windows\Logs\CBS\CBS.log
    • Filter recent errors:
      findstr /i /c:”error” C:\Windows\Logs\CBS\CBS.log > “%USERPROFILE%\Desktop\cbs_errors.txt”
  • DISM.log:
    • Path: C:\Windows\Logs\DISM\DISM.log
  • WindowsUpdate.log:
    • On Windows 10/11, generate it via PowerShell:
      Get-WindowsUpdateLog
    • This creates WindowsUpdate.log on your Desktop.

What to look for:

  • Entries referencing NetFx3 payload failures, source not found, or policy blocks.
  • Package identity mismatches or hash mismatches (often a sign of build/language mismatch).
  • WSUS redirections or 0x8024xxxx Windows Update errors that accompany 0x800F0950.

Event Viewer:

  • Event Viewer > Applications and Services Logs > Microsoft > Windows:
    • Servicing
    • WindowsUpdateClient
    • Setup
  • Look for warnings/errors during the timeframe of failed installations.

Advanced Diagnostics
Use these carefully. They are useful when 0x800F0950 persists despite the standard steps.

  • Check feature state and packages
    DISM /Online /Get-Features /Format:Table | findstr /i netfx
    DISM /Online /Get-Packages | findstr /i netfx

  • Verify policy state for Feature on Demand

    • Run: gpedit.msc
    • Computer Configuration > Administrative Templates > System > “Specify settings for optional component installation and component repair” = Enabled with “Download repair content…” checked.
    • If you don’t have gpedit (Windows Home), set policy via registry or use a local SxS source.
      • Registry path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Servicing
      • Value: RepairContentServerSource (requires careful configuration; prefer Group Policy UI or SxS source)
  • Ensure TLS and certificate trust are healthy (for online installs)

    • Update root certificates via Windows Update
    • Confirm system time and region are correct
  • Confirm store health again
    sfc /scannow
    DISM /Online /Cleanup-Image /RestoreHealth

  • Component store state cleanup (safe)
    DISM /Online /Cleanup-Image /StartComponentCleanup

  • Validate the ISO

    • Match version/build with winver
    • If you updated to a new Windows build, download a new ISO that matches the new build
    • Use the same display language as your OS

Note: Tools like Driver Verifier or WinDbg aren’t applicable here since this is a servicing/feature installation error, not a driver crash. Focus on CBS/DISM/Windows Update logs and servicing commands.

Post-Fix Checklist
Confirm that the system is stable and .NET is properly installed.

  • Verify .NET 3.5 is enabled:
    DISM /Online /Get-Features /Format:Table | findstr /i netfx
    Expected: NetFx3 = Enabled
  • Verify apps relying on .NET 3.5/4.x now run without prompting for installation.
  • Check Event Viewer (Servicing/WindowsUpdateClient) for a clean log since the fix.
  • Optional: Re-run SFC and DISM to ensure no residual corruption:
    sfc /scannow
    DISM /Online /Cleanup-Image /RestoreHealth
  • Create a restore point for this known-good state.
See also  0x800705b4 Timeout: Services Firewalls and Stable Retry Strategy

When to Seek Professional Help

  • You’re in a managed (domain/WSUS) environment and policies prevent Feature on Demand downloads and you cannot change them.
  • DISM and SFC repeatedly fail and an in-place repair upgrade still doesn’t resolve 0x800F0950.
  • Logs show persistent package identity or hash mismatches even with a correctly matched ISO.
  • You suspect disk or filesystem issues beyond logical errors (SMART warnings, repeated corruption).
  • After all steps, .NET-dependent business apps remain nonfunctional.

Prevention Tips

  • Keep Windows updated (SSU/LCU). Reboot promptly after updates.
  • Maintain enough free disk space (10–15 GB) for updates and servicing operations.
  • For corporate setups, standardize a local SxS source that matches your Windows image and build. Document it for help desk usage.
  • Avoid aggressive “registry cleaners” or tools that remove WinSxS content.
  • For developers/IT pros, keep the latest Windows ISO that matches your environment for quick offline .NET 3.5 enablement.
  • Ensure correct time, time zone, and TLS settings to avoid download/validation problems.
  • Create periodic restore points or system images before major updates.

Conclusion
Error 0x800F0950 during .NET feature installation is frustrating, but it’s almost always fixable with the right approach. In most cases, using DISM with a matching ISO source (the \sources\sxs folder) or adjusting Group Policy to allow downloading optional components from Windows Update resolves the problem. When stubborn issues persist, repairing the component store, resetting Windows Update components, installing the latest SSU/LCU, or performing an in-place repair upgrade will get you past 0x800F0950. With the steps above, you can restore .NET quickly and keep your Windows system reliable for the apps you depend on.

FAQ Section

What does error 0x800F0950 mean in Windows 10/11?

It’s a Windows servicing error that indicates Windows couldn’t install or enable a feature, most often .NET Framework 3.5. Causes include missing payloads (no internet or blocked by policy), component store issues, update stack problems, or mismatched installation sources.

How do I fix .NET Framework 3.5 install failed with 0x800F0950?

Try these in order: run SFC and DISM /RestoreHealth, install the latest updates and reboot, then enable NetFx3 with DISM /Online /Enable-Feature /FeatureName:NetFx3 /All. If that fails, mount a matching Windows ISO and run DISM with /Source:X:\sources\sxs /LimitAccess. In corporate environments, enable the Group Policy to download optional components from Windows Update or use a local SxS source.

Can I install .NET 3.5 in Safe Mode?

No. Windows feature enablement is typically blocked in Safe Mode. Use Safe Mode for repair/cleanup (e.g., SFC, DISM, Windows Update reset), then reboot into normal mode to install .NET.

What’s the difference between 0x800F0950 and 0x800F081F?

Both occur during feature installs. 0x800F081F explicitly means “source files not found.” 0x800F0950 often accompanies missing payloads too, but can also appear due to policy blocks, servicing stack issues, or mismatches. The fixes overlap, with emphasis on using a correct ISO SxS source and repairing the component store.

Is it safe to delete SoftwareDistribution to fix Windows Update?

You shouldn’t delete it while services are running, but it’s safe to stop Windows Update-related services, rename the folder (e.g., to SoftwareDistribution.old), and restart services. This is a standard Windows Update components reset and often fixes feature installation errors like 0x800F0950.

You’ve got this. With the right DISM commands, a properly matched ISO, and a few servicing tweaks, the 0x800F0950 .NET installation error can be resolved on nearly any Windows 10 or Windows 11 system. If you get stuck, revisit the logs (CBS.log, DISM.log, WindowsUpdate.log), and don’t hesitate to use the in-place repair upgrade—it’s a proven fix for the toughest cases.

About the author

Jonathan Dudamel

Jonathan Dudamel

I'm Jonathan Dudamel, an experienced IT specialist and network engineer passionate about all things Windows. I have deep expertise in Microsoft project management, virtualization (VMware ESXi and Hyper-V), and Microsoft’s hybrid platform. I'm also skilled with Microsoft O365, Azure ADDS, and Windows Server environments from 2003 through 2022.

My strengths include Microsoft network infrastructure, VMware platforms, CMMS, ERP systems, and server administration (2016/2022).