【发布时间】:2015-09-08 11:14:13
【问题描述】:
我的 asp.net web 应用程序是混合的,它可以有所有不同类型的控制器 -
- asp.net MVC 控制器(源自
System.Web.Mvc.Controller) - asp.ner Web API 控制器(源自
System.Web.Http.ApiController)和 - 基于 asp.net 的 OData 控制器(源自
System.Web.Http.OData.ODataController)
我正在尝试在WebApiConfig.cs 中为 Web API 和 OData 控制器配置路由,它看起来像这样 -
public static void Register(HttpConfiguration config)
{
config.Routes.MapODataRoute("OData", "odata", CreateEdmModel());
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });
}
public static IEdmModel CreateEdmModel()
{
ODataConventionModelBuilder modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<Detail>("Details");
return modelBuilder.GetEdmModel();
}
可行的路线 -
- api/Values/GetSummary(对于
ASP.Net Web API基于ValuesController和GetSummaryaciton 方法) - 首页(对于常规的 asp.net MVC
HomeController)
行不通的路线-
- odata/摘要
- odata/Summary/GetSummary
我的常规 MVC 控制器执行良好,Web API 控制器也可以正常工作,但不知何故路由不适用于 OData 控制器。有没有人尝试在单个应用程序中混合和匹配并使其工作?我还需要在路由中指定操作方法名称,因为所有操作方法大多都是GET,因为它是一个报告应用程序。
【问题讨论】:
-
您能否发布您的 SummaryOdataController 的代码,我认为问题可能存在?
标签: asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api odata