Can not find system.web.http
Categories:
Resolving 'System.Web.Http' Reference Issues in ASP.NET MVC 4

Encountering 'System.Web.Http' reference errors in your ASP.NET MVC 4 project? This guide provides comprehensive solutions to common causes, from missing NuGet packages to incorrect assembly bindings, ensuring your Web API components function correctly.
The 'System.Web.Http' namespace is fundamental for building Web APIs in ASP.NET, particularly within MVC 4 projects. It contains core classes like ApiController
and HttpConfiguration
that are essential for defining HTTP services. When Visual Studio reports that it 'cannot find' this reference, it typically indicates a problem with how the Microsoft ASP.NET Web API
package is integrated into your project. This article will walk you through the most common reasons for this issue and provide step-by-step solutions to get your project compiling and running smoothly.
Understanding the 'System.Web.Http' Dependency
Before diving into solutions, it's crucial to understand that System.Web.Http
is part of the Microsoft ASP.NET Web API
framework. Unlike System.Web.Mvc
, which is included by default in MVC projects, Web API components are often added as separate NuGet packages. This modular approach allows developers to include only the necessary parts of the framework, but it also means that missing or corrupted packages can lead to reference errors. The primary assembly containing System.Web.Http
is System.Web.Http.dll
.
flowchart TD A[ASP.NET MVC 4 Project] --> B{Needs Web API?} B -->|Yes| C[Install 'Microsoft.AspNet.WebApi' NuGet] C --> D[References 'System.Web.Http.dll'] D --> E[Access 'System.Web.Http' Namespace] B -->|No| F[No Web API Needed] style A fill:#f9f,stroke:#333,stroke-width:2px style C fill:#bbf,stroke:#333,stroke-width:2px
Dependency flow for 'System.Web.Http' in an ASP.NET MVC 4 project.
Common Causes and Solutions
The 'cannot find System.Web.Http' error can stem from several issues. We'll address the most frequent ones, starting with NuGet package management, which is often the root cause.
1. Solution 1: Install/Update NuGet Package
The most common reason for this error is that the Microsoft.AspNet.WebApi
NuGet package (or its core components) is either missing or outdated. Open the Package Manager Console in Visual Studio (Tools > NuGet Package Manager > Package Manager Console) and run the following command to install or update the necessary packages. This command will install the latest stable version of the Web API client libraries, including System.Web.Http
.
2. Solution 2: Check Project References
Even after installing the NuGet package, sometimes the project reference might not be correctly added or might be pointing to an incorrect version. In Solution Explorer, right-click on your project, select 'Add' > 'Reference...', then navigate to 'Assemblies' > 'Framework' or 'Extensions' and ensure System.Web.Http
is checked. If it's already checked, try unchecking it, rebuilding, then re-checking it and rebuilding again. Also, verify the HintPath
in your .csproj
file if you're experiencing issues with specific versions.
3. Solution 3: Clear NuGet Caches and Rebuild
Corrupted NuGet caches can sometimes lead to reference resolution problems. To clear the cache, go to Tools > Options > NuGet Package Manager > General, and click 'Clear All NuGet Cache(s)'. After clearing, close Visual Studio, delete the bin
and obj
folders from your project directory, and then reopen Visual Studio and rebuild your solution. This forces a fresh download and resolution of all packages.
4. Solution 4: Verify Web.config Assembly Bindings
For projects that have been upgraded or have complex dependency trees, web.config
assembly binding redirects can sometimes cause conflicts. Ensure that your web.config
file has correct binding redirects for System.Web.Http
and related assemblies (e.g., System.Net.Http.Formatting
, System.Web.Http.WebHost
). Incorrect redirects can prevent the correct version of the assembly from being loaded at runtime. You can often fix these by running Update-Package -reinstall
in the Package Manager Console.
Install-Package Microsoft.AspNet.WebApi -Version 5.2.7
# Or, to update existing packages:
Update-Package Microsoft.AspNet.WebApi
NuGet commands to install or update ASP.NET Web API packages.
Troubleshooting Specific Scenarios
Sometimes, the issue might be more nuanced. Here are a few specific scenarios and their resolutions.
System.Web.Http
from one version and System.Net.Http.Formatting
from another) can lead to runtime errors even if the project compiles. Always try to keep all related Web API packages at the same version.Scenario: Project Type Mismatch
If you're trying to use Web API in a project that wasn't initially set up as an MVC 4 Web API project, you might need to manually add more components. Ensure your project targets the correct .NET Framework version compatible with the Web API version you're trying to use.
Scenario: Source Control Issues
If you're working in a team environment, ensure that the packages
folder (if not excluded by .gitignore
) and the .csproj
file changes related to NuGet packages are correctly committed and pulled by all team members. Sometimes, local package restoration issues can arise from source control conflicts.

Verifying 'System.Web.Http' reference in Visual Studio Solution Explorer.
By systematically checking these potential causes, you should be able to resolve the 'cannot find System.Web.Http' error and successfully build your ASP.NET MVC 4 project with Web API functionality.