我遇到了一个由糟糕的 sitecore 文档和我的经验不足引起的问题。
案例: 我有一个不是由我建立的 sitecore 项目,但我必须对其进行开发。没什么复杂的,效果图很少——基本的东西
问题: 我必须添加 3 个自定义路由才能将它们用于一些 ajax 调用。我有 routeconfig.cs 文件并在此处添加了这些路由,但看起来这并没有执行,因为任何地方都没有全局类。
所以,因为我读到我应该使用这些管道,但我不完全理解如何使用在应用程序启动时只执行一次的管道
我有一个由处理 404 的其他人开发的,但是这个是在每个请求上执行的。我不想检查路由是否存在并在此过程中注册
还有其他办法吗?
现在是这样工作的:
namespace SS.Configuration.Pipelines
{
public class Custom404ResolverPipeline : HttpRequestProcessor
{
public override void Process(HttpRequestArgs args)
{
Assert.ArgumentNotNull(args, "args");
if (RouteTable.Routes["AjaxCall"] == null) RouteConfig.RegisterRoutes(RouteTable.Routes);
//do some other stuff
请您参考如下方法:
您应该在initialize 管道中注册您的路由,以便它们仅在应用程序启动时注册一次:How to register custom ASP.NET MVC routes in Sitecore
链接文章中的示例:
为初始化管道创建自定义处理器并在 Process 方法中定义自定义路由,类似于以下内容:
public class RegisterCustomRoute
{
public virtual void Process(PipelineArgs args)
{
RouteTable.Routes.MapRoute("CustomRoute", "some/route/{controller}/{action}/{id}");
}
}
将此处理器添加到 Sitecore InitializeRoutes 处理器之前的初始化管道中。您可以通过以下方式在配置补丁文件的帮助下执行此操作:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<pipelines>
<initialize>
<processor type="MyNamespace.RegisterCustomRoute, MyAssembly" patch:before="processor[@type='Sitecore.Mvc.Pipelines.Loader.InitializeRoutes, Sitecore.Mvc']" />
</initialize>
</pipelines>
</sitecore>
</configuration>
