在 ASP.NET Web API 的 WebApiConfig.cs 中添加如下的代码启用属性路由:
config.MapHttpAttributeRoutes();
但运行时却出现如下的错误:
System.InvalidOperationException:
该对象尚未初始化。请确保在所有其他初始化代码后面的应用程序启动代码中调用 HttpConfiguration.EnsureInitialized()。
在 System.Web.Http.Routing.RouteCollectionRoute.get_SubRoutes()
在 System.Web.Http.Routing.RouteCollectionRoute.GetEnumerator()
请问如何解决这个问题?
看情形,你得把 config.MapHttpAttributeRoutes() 调用尽量后移。
GlobalConfiguration.Configure(WebApiConfig.Register);
后移,问题依旧
@dudu: Global.asax 中 GlobalConfiguration.Configure(WebApiConfig.Register);
@Launcher: 高!
之前是这么写的:
WebApiConfig.Register(GlobalConfiguration.Configuration);
改为:
GlobalConfiguration.Configure(WebApiConfig.Register);
问题就解决了。
@dudu: 写成GlobalConfiguration.Configure(WebApiConfig.Register)后会报错,
“System.InvalidOperationException”类型的异常在 System.Web.Http.dll 中发生,但未在用户代码中进行处理
其他信息: 直接路由不能使用参数 'controller'。若要为控制器创建路由,请指定文字路径来代替此参数。
这是什么原因?
写这个 GlobalConfiguration.Configure(WebApiConfig.Register); 版本高啊 System.Web.Http.WebHost.dll, v5.2.3.0