2016-08-25 6 views
0

私は、貧弱なサイトコードのドキュメントと私の小さな経験に起因する問題があります。Sitecore 8 MVC ajaxコールルートレジスタ

ケース: 私にはセットアップされていないサイトコアプロジェクトがありますが、私はそれを開発しなければなりませんでした。

問題: いくつかのajax呼び出しで3つのカスタムルートを追加する必要があります。私はrouteconfig.csファイルを持っていて、ここにそれらのルートを追加しましたが、どこにもグローバルクラスがないので、これは実行されないようです。

だから、私は、これらのパイプラインを使用する必要がありますが、私は正確にアプリが、私は404を扱う他の誰かによって開発された1持って

を開始したとき、一度だけ実行されますいずれかを使用する方法を理解していないことを読んでいるのでこのリクエストは、リクエストごとに実行されます。ルートが存在するかどうかをチェックしてこのプロセスに登録したくない場合

他の方法はありますか?

これは、今どのように動作するかです:

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 

答えて

3

あなたは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プロセッサの直前の初期化パイプラインに追加します。あなたは、パイプラインの道で行きたくない場合は、あなたもNugetからウェブ活性化剤パッケージをダウンロードして起動クラスのようなものを実装することができ

<?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> 
+0

の下にあなたのルートをマップすることができますそれは私が得る:パイプラインを得ることができませんでした:preprocessRequest(ドメイン:) –

+0

私の問題は、私のsitecore.configで、これは欠けていると思うSitecore.Mvc.Pipelines.Loader.InitializeRoutesこれは正常ですか? –

+0

クリーンなSitecoreのインストールでは正常ではありません。 'InitializeRoutes'プロセッサは' Sitecore.Mvc.config'で定義されています。存在していることを確認し、これを削除する別の設定はありません。 '/ sitecore/admin/showconfig.aspx'を参照すると、最後にマージされたSitecore設定を見ることができます。 – jammykam

0

:あなたは、次のようにコンフィギュレーション・パッチファイルの助けを借りてこれを行うことができますあなたのルートを登録する。

[assembly: PostApplicationStartMethod(typeof(SomeNameSpace.StartUp), "Start")] 

namespace SomeNameSpace 
{ 

public static class StartUp 
{ 
    public static void Start() 
    { 

     MvcHandler.DisableMvcResponseHeader = true; 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
    } 
} 
} 

とRouteConfigクラスのご登録ルートの方法であなたははい、おかげで、私はこのリンクに行った、あまりにも:-)すべて良いが、私がテストしたときと

RouteTable.Routes.MapRoute("CustomRoute", "some/route/{controller}/{action}/{id}"); 
関連する問題