Error with WebApi 2.0 RouteAttribute

10,335

Solution 1

Please remove

    GlobalConfiguration.Configure(x => x.MapHttpAttributeRoutes());

from Global.asax.

And then call MapHttpAttributeRoutes in the WebApiConfig.cs

    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();
    }

Solution 2

In my case, I was getting this error because I was configuring Autofac before WebApi:

GlobalConfiguration.Configure(WebApiConfig.Register);
GlobalConfiguration.Configure(AutofacConfig.Register);

Changing the order got me past that issue:

GlobalConfiguration.Configure(AutofacConfig.Register);
GlobalConfiguration.Configure(WebApiConfig.Register);
Share:
10,335
Matt
Author by

Matt

Updated on June 04, 2022

Comments

  • Matt
    Matt almost 2 years

    Here's my Global.asax

        protected void Application_Start()
        {
            RegisterRoutes();
        }
    
        private static void RegisterRoutes()
        {
            AreaRegistration.RegisterAllAreas();
    
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
    
            GlobalConfiguration.Configure(x => x.MapHttpAttributeRoutes());
            GlobalConfiguration.Configuration.EnsureInitialized();
        }
    

    Here's my Web Api controller

        [RoutePrefix("api/admin/users/")]
        public class UsersController : ApiController
        {
            [Route("get")]
            public IQueryable<User> GetUsers()
            {
                return db.Users;
            }
        }
    

    And here's the error I get when I navigate to localhost:123/api/admin/users/get

    The object has not yet been initialized. Ensure that HttpConfiguration.EnsureInitialized() is called in the application's startup code after all other initialization code.

    I have no idea what I'm doing wrong here. I believe that I'm doing everything properly for the new WebApi 2.0 way, but I'm missing something.

    Thanks in advance.

    Update

    Here's the stack in-case it helps

    at System.Web.Http.Routing.RouteCollectionRoute.GetRouteData(String virtualPathRoot, HttpRequestMessage request) 
    at System.Web.Http.WebHost.Routing.HttpWebRoute.GetRouteData(HttpContextBase httpContext)