Kentico 11 customapi MapHttpRoute

Kentico 11 customapi MapHttpRoute

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

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

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

A road named 'customapi' is already in the road collection. Route names must be unique.

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

由于 Root.master.csOnInit 事件在每次加载页面后都会触发,因此每次加载页面时您基本上都会映射您的路线。

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

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

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 });
    }
}