MVCルーティングを活用してください
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Sitecoreはデフォルトのルーティング機構ですが、MVCベースのソリューションではカスタムルートを追加できます。 このMSDN記事ではAPS.NET MVCルーティング全般について説明しています。このトピックは、Sitecore MVCソリューションでカスタムルートを作成する際に考慮すべきことのみを説明しています。説明はVisual Studio 2015とSitecore Rocksの使用に基づいています。以前のバージョンのVisual Studioでは、いくつかの詳細が異なります。
MVCルートを追加する最も安全で推奨される方法は、Initializeパイプラインにプロセッサを追加し、ルートを登録し、RouteConfigクラスでルートテーブルを実装することです。これにより、Sitecoreルートを誤って壊すのを防ぎます。
カスタムルートを使用するには、以下の条件が必要です:
カスタムルートを定義してください
カスタムルートを定義するには:
-
RouteConfigクラスの実装におけるデフォルトルートを、解のApp_StartフォルダにあるVisual Studioが作成したRouteConfig.csファイルにコメントを書き出します。Visual Studioのコードは以下の通りです:
{ public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } }
-
この例に似たルートを追加してください:
routes.MapRoute("product", "product/{*pathInfo}", new { scItemPath = "/{*pathInfo}"});
このルートにより、コンテンツツリーの根にある項目は /name of productとしてもアクセス可能です。 /product/name of product.
Sitecoreはルートを定義する際に使用できるカスタム値を提供します:
- scLanguage – リクエストのコンテキスト言語です。
- scItemPath – ルートURLに関わらず、この要素の値を用いてアイテムが解決されます.
- scKeysToIgnore – Sitecoreに無視してほしいルートURLのキーです。もしルート内に存在した場合、URLからアイテムを解決しようとする前に削除されます。
このようにルートごとにコントローラーを指定することができます:
routes.MapRoute("product", "product/{*pathInfo}", new { scItemPath = "/{*pathInfo}", controller="Product});
カスタムルートでコントローラを指定していない場合、デフォルトのSitecoreコントローラがリクエストを処理します。同様に、アクションが指定されていない場合はデフォルトのアクション 'Index’ が使われます。
InitializeパイプラインのSitecore.Mvc.Pipelines.Loader.InitializeRoutesプロセッサは、すべてのルートにセッションが存在する必要があります。したがって、Sitecore.Mvc.Pipelines.Loader.InitializeRoutesプロセッサの前にカスタムルート登録プロセッサを追加すれば、コントローラーでセッションが利用可能になります。
Sitecore.Mvc.Pipelines.Loader.InitializeRoutesprocessor後に初期化されたプロセッサでルートを登録すると、そのセッションは利用できず、コントローラーリクエストも追跡されません。これは、追跡不要のカスタムルート、例えばWeb APIルートに有用です。
!注SitecoreはhttpRequestBeginパイプラインを実行し、Sitecoreコンテキストを設定してからリクエストを転送しますMVC。しかし、SitecorehttpRequestBeginは、Sitecore.configファイルのFilterUrlExtensionsプロセッサのパラメータにルートの終点が拡張子として記載されている場合のみ実行されます。
ASPX、ASHX、ASMX\*\*
(デフォルト設定はSitecoreバージョンによって多少異なります。)設定ファイルをパッチで修正し、例えば.txtを許可される拡張子として追加できます:
ASPX、ASHX、ASMX、TXT
カスタムルートを登録してください
カスタムルートを登録するには、プロセッサを作成し、Initializeパイプラインに追加します:
-
解決策の中で「パイプライン」というフォルダを作成してください。
-
フォルダを右クリックして「 追加、新しいアイテム...」を選択してください。
-
「 新しいアイテムを追加 - mvc 」ダイアログで、「 Sitecore」「 Pipelines」「 Loader Processor」をクリックしてください。

-
Visual Studioは以下の内容をファイルに追加します:
namespace mvc.Pipelines{ using Sitecore.Diagnostics; using Sitecore.Pipelines; // TODO: \App_Config\include\LoadRoutes.config created automatically when creating LoadRoutes class. public class LoadRoutes { public void Process(PipelineArgs args) { Log.Info("Sitecore is starting", this); } } }
-
ファイルのProcessメソッドでは、作成したルートを登録するコードに置き換えます:
RouteConfig.RegisterRoutes(RouteTable.Routes);
Sitecore Rocksは自動的にパッチ構成ファイルを作成し、プロセッサをInitializeパイプラインに追加します: