【问题标题】:routing for asp.net web api along with odataasp.net web api的路由以及odata
【发布时间】:2015-09-08 11:14:13
【问题描述】:

我的 asp.net web 应用程序是混合的,它可以有所有不同类型的控制器 -

  1. asp.net MVC 控制器(源自System.Web.Mvc.Controller
  2. asp.ner Web API 控制器(源自System.Web.Http.ApiController)和
  3. 基于 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();
}

可行的路线 -

  1. api/Values/GetSummary(对于ASP.Net Web API 基于ValuesControllerGetSummary aciton 方法)
  2. 首页(对于常规的 asp.net MVC HomeController

行不通的路线-

  1. odata/摘要
  2. odata/Summary/GetSummary

我的常规 MVC 控制器执行良好,Web API 控制器也可以正常工作,但不知何故路由不适用于 OData 控制器。有没有人尝试在单个应用程序中混合和匹配并使其工作?我还需要在路由中指定操作方法名称,因为所有操作方法大多都是GET,因为它是一个报告应用程序。

【问题讨论】:

  • 您能否发布您的 SummaryOdataController 的代码,我认为问题可能存在?

标签: asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api odata


【解决方案1】:

是的,可以混合使用所有这些控制器。如果首先在 Global.asax.cs 中激活 MVC 的路由,则 MVC 的默认路由可能不允许到达 OData 控制器。 如下所示更改 Global.asax.cs 中的行顺序将解决该问题。 MVC 控制器路由通常在 RouteConfig.cs 中设置,如果使用项目模板,Web API 和 OData 路由在 WebAPIConfig.cs 中。

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

        GlobalConfiguration.Configure(WebApiConfig.Register); // moved up before MVC's setup
        RouteConfig.RegisterRoutes(RouteTable.Routes);

        BundleConfig.RegisterBundles(BundleTable.Bundles);

    }

【讨论】:

    猜你喜欢
    • 2015-11-06
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    相关资源
    最近更新 更多