Umbraco8中没有IApplicationEventHandler
,他们已将其替换为User Composers
Umbraco 有自己的 global.asax 实现,正如你所说,它会覆盖默认路由。不执行通常的路由类,您必须在应用程序启动时添加您的路由。
我设法通过创建一个User Composer来做到这一点。用户作曲家在核心作曲家之后、最终作曲家之前作曲。
(下面,我创建了一个IComposer
,但IUserComposer
也应该可以工作。)
public class ApplicationEventComposer : IComposer
{
public void Compose(Composition composition)
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
在这个中你可以注册你自己的 RouteConfig、Bundles 等。小心点,很容易弄乱 Umbraco 路由......
下面是添加一个名为 TestController 的新控制器的示例:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
name: "Test",
url: "Test/{action}/{id}",
defaults: new { controller = "Test", action = "Index", id = UrlParameter.Optional }
);
}
}