Error with WebApi 2.0 RouteAttribute

社会主义新天地 提交于 2019-12-08 17:19:04

问题


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)

回答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();
    }



回答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);


来源:https://stackoverflow.com/questions/25066147/error-with-webapi-2-0-routeattribute

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!