【问题标题】:Error with WebApi 2.0 RouteAttributeWebApi 2.0 RouteAttribute 出错
【发布时间】:2014-09-23 19:49:18
【问题描述】:

这是我的 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();
    }

这是我的 Web Api 控制器

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

这是我导航到 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.

我不知道我在这里做错了什么。我相信我为新的 WebApi 2.0 方式做的一切都是正确的,但我错过了一些东西。

提前致谢。

更新

这是堆栈以防万一

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

【问题讨论】:

  • 你能分享你的 webapiconfig.cs 文件吗?

标签: c# asp.net-mvc-5 asp.net-mvc-routing asp.net-web-api2


【解决方案1】:

请删除

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

来自 Global.asax

然后在WebApiConfig.cs

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

【讨论】:

  • 今天早上刚试过。不确定我是否理解为什么需要在 WebApiConfig.cs 内部进行调用,但这解决了问题。感谢您的帮助。
  • 是约定俗成的吗? whateverConfig.cs 的名称有什么关系?
  • 可能与 this answer 有关 - 基本上必须在调用 GlobalConfiguration.Configure 之前映射路由。
【解决方案2】:

就我而言,我收到此错误是因为我在 WebApi 之前配置 Autofac:

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

更改顺序让我解决了这个问题:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-16
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 2018-12-04
    相关资源
    最近更新 更多