我正在寻找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,我可以在哪里添加这一行?
答案 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 });
}
}