My asp.net web application is hybrid which can have all different types of controllers -
- asp.net MVC controllers (derived from
System.Web.Mvc.Controller) - asp.ner Web API controllers (derived from
System.Web.Http.ApiController) and - asp.net based OData controllers (derived from
System.Web.Http.OData.ODataController)
I am trying to configure routing in WebApiConfig.cs for Web API and OData controllers and it looks something like this -
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();
}
routes that work -
- api/Values/GetSummary (for
ASP.Net Web APIbasedValuesControllerwithGetSummaryaciton method) - Home (for regular asp.net MVC
HomeController)
routes that doesnt work-
- odata/Summary
- odata/Summary/GetSummary
My regular MVC controllers execute fine, Web API controllers also work fine, but somehow routing is not working for OData controllers. Has anyone tried mix and match in a single application and able to make it work? I will also need to specify action method name in the route, since all action method are mostly GET since it is a reporting application.