GlobalConfiguration.Configure() not present after Web API 2 and .NET 4.5.1 migration
Categories:
Resolving 'GlobalConfiguration.Configure()' Missing After Web API 2 and .NET 4.5.1 Migration

Learn why GlobalConfiguration.Configure()
might disappear after migrating your ASP.NET Web API project to Web API 2 and .NET 4.5.1, and how to correctly resolve this common issue.
Migrating an existing ASP.NET Web API project, especially from an older version to Web API 2 and updating the .NET Framework to 4.5.1 or later, can sometimes lead to unexpected compilation errors. One common issue developers encounter is the 'missing' GlobalConfiguration.Configure()
method. This article will delve into the root causes of this problem and provide clear, actionable steps to restore your project's functionality.
Understanding the Role of GlobalConfiguration.Configure()
In earlier versions of ASP.NET Web API, GlobalConfiguration.Configure()
was the primary entry point for configuring your Web API routes, formatters, and other settings. It typically resided in the Global.asax.cs
file within the Application_Start
method, calling a static method like WebApiConfig.Register(GlobalConfiguration.Configuration)
. This setup ensured that your API's configuration was applied when the application started.
flowchart TD A[Application_Start in Global.asax] --> B{Call GlobalConfiguration.Configure()} B --> C[WebApiConfig.Register(config)] C --> D[Define Routes, Formatters, etc.] D --> E[Web API Configuration Applied]
Typical Web API Configuration Flow (Pre-OWIN)
The Impact of OWIN and Microsoft.Owin.Host.SystemWeb
The introduction of OWIN (Open Web Interface for .NET) and its integration with ASP.NET Web API 2 significantly changed how applications are bootstrapped and configured. When you migrate to Web API 2, especially if you also update related NuGet packages, you might inadvertently introduce OWIN components. OWIN-based applications often use a Startup.cs
class with a Configuration
method to set up the application pipeline, including Web API. This new approach can sometimes cause conflicts or render the traditional GlobalConfiguration.Configure()
method inaccessible if the necessary System.Web.Http
assembly reference is not correctly maintained or if the project structure shifts towards an OWIN-centric startup.
Resolving the Missing Configure() Method
There are primarily two scenarios that lead to GlobalConfiguration.Configure()
being unavailable, and each has a distinct solution:
1. Scenario 1: Missing or Incorrect Assembly Reference
The GlobalConfiguration
class and its Configure
method are part of the System.Web.Http
assembly. If this assembly is missing or an older version is referenced, the method will not be found. Ensure you have the correct version of Microsoft.AspNet.WebApi.Core
installed via NuGet, which brings in the necessary System.Web.Http
assembly.
2. Scenario 2: Transitioning to OWIN Startup (Recommended for Web API 2)
If your project is moving towards an OWIN-based startup, the GlobalConfiguration.Configure()
method might be intentionally deprecated in favor of OWIN's IAppBuilder
configuration. In this case, you should move your Web API configuration logic into an OWIN Startup.cs
class. This is the recommended approach for modern Web API 2 applications.
using System.Web.Http;
using Owin;
[assembly: OwinStartup(typeof(YourNamespace.Startup))]
namespace YourNamespace
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
// Configure Web API routes
WebApiConfig.Register(config);
// Other configurations (e.g., JSON formatters, dependency injection)
// config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
app.UseWebApi(config);
}
}
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
Example of an OWIN Startup.cs for Web API 2 configuration
In the OWIN approach, the WebApiConfig.Register
method is still used, but it's called from within the Startup.Configuration
method, passing an HttpConfiguration
instance. The app.UseWebApi(config)
line then integrates Web API into the OWIN pipeline.
Startup.cs
approach, ensure you remove any conflicting GlobalConfiguration.Configure()
calls from Global.asax.cs
to avoid duplicate configuration or unexpected behavior.Verifying NuGet Packages
A crucial step in troubleshooting is to verify that all relevant NuGet packages are up-to-date and compatible. Specifically, check the following:

Ensure Microsoft.AspNet.WebApi.Core
and Microsoft.Owin.Host.SystemWeb
are correctly installed.
Package Manager Console
Update-Package Microsoft.AspNet.WebApi.Core Update-Package Microsoft.AspNet.WebApi.WebHost Update-Package Microsoft.Owin.Host.SystemWeb
Project File (.csproj)
By carefully managing your NuGet packages and understanding the shift towards OWIN-based startup for Web API 2, you can effectively resolve the 'missing GlobalConfiguration.Configure()
' issue and ensure a smooth migration.