2017-06-29 61 views
2

我有一個由Kentico創建預覽頁以下網址:網址不打任何行動

http://localhost:63603/cmsctx/pv/administrator/culture/en-GB/wg/7c938312-f3b2-4c87-afc3-d6e113d59177/h/8eabc114188f83ff5c6697cf943093ddf80ab319e1312aad7260feabd68acc89/-/about-us?uh=2fb6ea5fcb0f72d0b8a68be30aeea6ca9b985c84d9a5e7a605a746f58f53afae

但它沒有擊中任何我的控制器或動作的 - 在我路由的配置我有以下兩條路線:

// Kentico CMS Console Preview Route 
routes.MapRoute(
    name: "Preview", 
    url: "cmsctx/pv/{username}/culture/{culture}/wg/{workflowGuid}/h/{hash}/{*pathname}", 
    defaults: new { controller = "Preview", action = "Index" }); 

// Default catch all route 
routes.MapRoute(
    name: "Default", 
    url: "{*pathname}", 
    defaults: new { controller = "Alias", action = "CatchAll" }); 

我希望上面的網址打預覽控制器,或者至少是捕捉一切,但也控制器正在被擊中,我只是得到一個404資源無法找到。

奇怪的是,如果我從網址中刪除/-/或在其旁邊輸入一個字母或數字/-1/,那麼預覽控制器將被擊中。有誰知道爲什麼/-/導致我的代碼不擊中任何控制器?

這是我的預見控制器:

public class PreviewController : Controller 
{ 
    public ActionResult Index(PreviewModel model) 
    { 
     model = previewModelBuilder.GetPreviewModel(model); 

     if (model.Page != null) 
     { 
      return View(model); 
     } 
     else 
     { 
      throw new HttpException(404, "Page not found"); 
     } 
    } 
} 
+1

這些控制器\操作('Preview','Index','Alias','CatchAll')是否有任何'Route'屬性? – Evk

+0

@EVK控制器/動作沒有任何屬性 - 請參閱上面的編輯 – Pete

+2

@Pete,我創建了一個小例子,你的路由映射是正確的,即使用'/ - /'也可以通過'Index'操作來訪問URL。也許你得到404,因爲'model.Page'是'null'? –

回答

0

好吧,我發現這是什麼Kentico不會做的事情 - 在我的Global.asax我已經註冊了以下內容:

ApplicationConfig.RegisterFeatures(ApplicationBuilder.Current); 

這運行以下內容:

public static void RegisterFeatures(ApplicationBuilder builder) 
{ 
    if (builder != null) 
    { 
     builder.UsePreview(); 
    } 
} 

刪除此項允許我的路由啓動並且控制器得到s命中