Mig*_*ura 7 asp.net-mvc asp.net-web-api
在带有Web API的MVC 5上,我有以下内容,仅使用属性路由:
RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
RouteTable.Routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.([iI][cC][oO]|[gG][iI][fF])(/.*)?" }); // TODO: Check for Apple Icons
RouteTable.Routes.MapMvcAttributeRoutes();
GlobalConfiguration.Configuration.MapHttpAttributeRoutes();
AreaRegistration.RegisterAllAreas();
Run Code Online (Sandbox Code Playgroud)
在RouteTable中创建了所有MVC路由......但不是API那些......
我检查了RouteTable.Routes,我看到了一个异常:
该对象尚未初始化.确保在所有其他初始化代码之后在应用程序的启动代码中调用HttpConfiguration.EnsureInitialized().
System.Web中的System.Web.Http.Routing.RouteCollectionRoute.get_SubRoutes()at System.Web.Http.Routing.RouteCollectionRoute.GetEnumerator()at System.Linq.SystemCore_EnumerableDebugView`1.get_Items()
为了测试这个,我只为项目添加了两个Web Api动作:
[RoutePrefix("api")]
public class StatApiController : ApiController {
[Route("stats/notescreateddaily"), HttpGet]
public IHttpActionResult NotesCreatedDaily() {
// Some code
}
[Route("stats/userscreateddaily"), HttpGet]
public IHttpActionResult UsersCreatedDaily() {
// Some code
}
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
谢谢你,米格尔
Mig*_*ura 19
解决方案实际上取代了:
GlobalConfiguration.Configuration.MapHttpAttributeRoutes();
Run Code Online (Sandbox Code Playgroud)
通过:
GlobalConfiguration.Configure(x => x.MapHttpAttributeRoutes());
Run Code Online (Sandbox Code Playgroud)
这是Web API 2的变化.
解决方案是在完成所有与Web API相关的配置后调用GlobalConfiguration.Configuration.EnsureInitialized();,但我很好奇为什么你的注册看起来像这样...你使用什么样的项目模板来创建MVC5项目?...预定义的模板Visual Studio 附带的结构有助于最大限度地减少路由排序问题,因此建议使用它们,所以想知道为什么您的配置结构看起来像这样......
| 归档时间: |
|
| 查看次数: |
11795 次 |
| 最近记录: |