カスタムASP.NET MVC ルートをSitecoreに登録する方法


解説

Sitecoreを使用すると、カスタムASP.NET MVCルートをSitecoreサイトで使用できます。

ただし、これらのルートを不適切に追加すると、ダイアログが壊れたり、ボタンが機能しなくなったりするなど、Sitecore クライアントの使用に関するさまざまな問題が発生する可能性があります。

たとえば、Global.asaxファイルでカスタム ルートを定義した結果として、Sitecoreによって定義され、Sitecoreクライアント機能に使用されるいくつかのデフォルト ルートの競合を引き起こします。

この記事では、Sitecoreクライアントで使用されるルートと競合しないようにカスタム ルートを追加するためのガイドを提供します。

ASP.NET ルーティングの詳細については、次の記事を参照してください:
https://msdn.microsoft.com/en-us/library/cc668201.aspx

解決策

デフォルトのSitecoreルートと競合しないようにカスタムASP.NET MVCルートを定義するには、以下の手順に従ってください。

  1. initializeパイプラインのカスタム プロセッサを作成し、次のようにProcessメソッドでカスタム ルートを定義します:
    public class RegisterCustomRoute
    {
      public virtual void Process(PipelineArgs args)
      {
        RouteTable.Routes.MapRoute("CustomRoute", "some/route/{controller}/{action}/{id}");
      }
    }
  2. このプロセッサをSitecore InitializeRoutesプロセッサの直前のinitializeパイプラインに追加します。これは、以下のように構成パッチ ファイルを使用して実行できます:
    <?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>
    注意:カスタム構成パッチ ファイルがSitecore 構成の最後のパッチとして適用されていることを確認してください。
    これを行うには、パッチ ファイルを/App_Config/Includeディレクトリのサブフォルダーに配置してください。このサブフォルダーの名前は、他のサブフォルダーに比べてアルファベット順的に最後の名前である必要があります(例えば、Z_CustomConfigsなどにする)。

対応する例は、以下からダウンロードできます:

  1. CustomRoute.cs
  2. CustomRouteConfiguration.config