title: WEB API calls giving 500 error after upgrading to sitecore 8
body: <p>Recently, we upgraded to Sitecore 8.0 from Sitecore 7.5. After the upgrade, the Custom Web API calls began returning 500 error codes with the below exception: </p>
  
  <pre><code>Message:"An error has occurred."
  ExceptionMessage:"ValueFactory attempted to access the Value property of this instance."
  ExceptionType:"System.InvalidOperationException"
  StackTrace:"   at System.Lazy`1.CreateValue()
     at System.Lazy`1.LazyInitValue()
     at System.Web.Http.Dispatcher.DefaultHttpControllerSelector.GetControllerMapping()
     at System.Web.Http.Routing.AttributeRoutingMapper.AddRouteEntries(SubRouteCollection collector, HttpConfiguration configuration, IInlineConstraintResolver constraintResolver, IDirectRouteProvider directRouteProvider)
     at System.Web.Http.Routing.AttributeRoutingMapper.&lt;&gt;c__DisplayClass2.&lt;&gt;c__DisplayClass4.&lt;MapAttributeRoutes&gt;b__1()
     at System.Web.Http.Routing.RouteCollectionRoute.EnsureInitialized(Func`1 initializer)
     at System.Web.Http.Routing.AttributeRoutingMapper.&lt;&gt;c__DisplayClass2.&lt;MapAttributeRoutes&gt;b__0(HttpConfiguration config)
     at System.Web.Http.CorsHttpConfigurationExtensions.&lt;&gt;c__DisplayClass3.&lt;AddCorsMessageHandler&gt;b__0(HttpConfiguration config)
     at System.Web.Http.HttpConfiguration.ApplyControllerSettings(HttpControllerSettings settings, HttpConfiguration configuration)
     at System.Web.Http.Controllers.HttpControllerDescriptor.InvokeAttributesOnControllerType(HttpControllerDescriptor controllerDescriptor, Type type)
     at System.Web.Http.Dispatcher.DefaultHttpControllerSelector.InitializeControllerInfoCache()
     at System.Lazy`1.CreateValue()
     at System.Lazy`1.LazyInitValue()
     at System.Web.Http.Dispatcher.DefaultHttpControllerSelector.GetControllerMapping()
     at System.Web.Http.Routing.AttributeRoutingMapper.AddRouteEntries(SubRouteCollection collector, HttpConfiguration configuration, IInlineConstraintResolver constraintResolver, IDirectRouteProvider directRouteProvider)
     at System.Web.Http.Routing.AttributeRoutingMapper.&lt;&gt;c__DisplayClass2.&lt;&gt;c__DisplayClass4.&lt;MapAttributeRoutes&gt;b__1()
     at System.Web.Http.Routing.RouteCollectionRoute.EnsureInitialized(Func`1 initializer)
     at System.Web.Http.Routing.AttributeRoutingMapper.&lt;&gt;c__DisplayClass2.&lt;MapAttributeRoutes&gt;b__0(HttpConfiguration config)
     at System.Web.Http.CorsHttpConfigurationExtensions.&lt;&gt;c__DisplayClass3.&lt;AddCorsMessageHandler&gt;b__0(HttpConfiguration config)
     at System.Web.Http.HttpConfiguration.ApplyControllerSettings(HttpControllerSettings settings, HttpConfiguration configuration)
     at System.Web.Http.Controllers.HttpControllerDescriptor.InvokeAttributesOnControllerType(HttpControllerDescriptor controllerDescriptor, Type type)
     at Sitecore.Services.Infrastructure.Web.Http.Dispatcher.NamespaceHttpControllerSelector.InitializeControllerDictionary()
     at System.Lazy`1.CreateValue()
  --- End of stack trace from previous location where exception was thrown ---
     at System.Lazy`1.get_Value()
     at Sitecore.Services.Infrastructure.Web.Http.Dispatcher.NamespaceHttpControllerSelector.SelectController(HttpRequestMessage request)
     at System.Web.Http.Dispatcher.HttpControllerDispatcher.&lt;SendAsync&gt;d__1.MoveNext()"
  </code></pre>
  
  <p>Routes are registered in <code>global.asax.cs</code>: </p>
  
  <pre class="lang-cs prettyprint-override"><code>protected void Application_Start(object sender, EventArgs e)
          {
              GlobalConfiguration.Configure(config =&gt;
              {
                  config.MapHttpAttributeRoutes();
  
                  //config.Routes.MapHttpRoute(
                  //    name: "DefaultApi",
                  //    routeTemplate: "api/{controller}/{id}",
                  //    defaults: new { id = RouteParameter.Optional }
                  //);
              });
              SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));
          }
  </code></pre>