Kentico 11 customapi MapHttpRoute

时间:2018-01-11 16:17:18

标签: kentico

我正在寻找Kentico 11中的解决方案来添加我们的自定义API的映射:

GlobalConfiguration.Configuration.Routes.MapHttpRoute ("customapi", "customapi / {controller} / {id}", new {id = System.Web.Http.RouteParameter.Optional});

我在模板root.master.cs的OnInit之后添加了这一行,这在第一次加载时工作正常,但是对于下一次加载,会出现这个错误:

  

一条名为' customapi'已经在道路收集。路线   名称必须是唯一的。

Kentico上有一个application_start,我可以在哪里添加这一行?

1 个答案:

答案 0 :(得分:0)

由于每次加载页面后OnInit Root.master.cs事件都会触发,因此每次页面加载时都会映射您的路径。

您需要在加载应用程序时映射路由,而不是页面

Create a custom module,并在模块的init上设置路由。应用程序启动时会初始化模块。

using System.Web.Http;
using CMS;
using CMS.DataEngine;

[assembly: RegisterModule(typeof(MyCustomModule))]
public class MyCustomModule : Module
{
    public MyCustomModule() : base("MyCustomModule") { }

    // Called when the application starts
    protected override void OnInit()
    {
        base.OnInit();

        GlobalConfiguration.Configuration.Routes.MapHttpRoute("customapi", "customapi/{controller}/{id}", new { id = System.Web.Http.RouteParameter.Optional });
    }
}