我在Kentico 11中寻找一个解决方案来添加自定义API的映射:
GlobalConfiguration.Configuration.Routes.MapHttpRoute ("customapi", "customapi / {controller} / {id}", new {id = System.Web.Http.RouteParameter.Optional});
我在模板OnInit的root.master.cs之后添加了这一行,这在第一次加载时很好,但是对于下一次加载,有以下错误:
一条名为“customapi”的路已经在公路集合中了。路线名称必须是唯一的。
在Kentico上有一个application_start,我可以在哪里添加这一行?
发布于 2018-01-13 07:11:32
当OnInit
事件的Root.master.cs
在页面的每次加载之后触发时,您实际上是在每次页面加载时映射您的路由。
您需要在应用程序加载时映射路由,而不是页面。
创建自定义模块,并在模块的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 });
}
}
https://stackoverflow.com/questions/48211550
复制相似问题