2017-06-29 9 views
2

Ich habe die folgende URL, die von Kentico erstellt wird, eine Seite in der Vorschau:URL trifft keine Aktionen

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

Aber es ist keine meiner Controller oder Aktionen schlagen - in meinem Route Config ich habe folgende 2 Routen:

// 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" }); 

ich würde erwarten, dass die oben url die Vorschau-Controller schlagen, oder zumindest der Fang alle, aber weder Controller wird getroffen und ich bekomme nur eine 404 Ressource kann nicht gefunden werden.

Seltsamerweise, wenn ich die /-/ von der URL entfernen oder einen Buchstaben oder eine Nummer daneben setzen /-1/, dann wird der Vorschau-Controller getroffen werden. Weiß jemand, warum der Code /-/ meinen Code verursacht, um keine Controller zu treffen?

Dies ist meine Vorschau-Controller:

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

Haben Sie 'Route' Attribute auf diesen Controllern \ Aktionen (' Vorschau', 'Index',' Alias', 'CatchAll')? – Evk

+0

@EVK Keine Attribute auf den Controllern/Aktionen - siehe Bearbeiten oben – Pete

+2

@Pete, Ich habe ein kleines Beispiel erstellt, das Mapping Ihrer Routen ist korrekt und die URL wird durch die 'Index' Aktion auch mit'/-/'getroffen. Vielleicht bekommst du 404 wegen 'model.Page' ist' null'? –

Antwort

0

Ok habe ich gefunden, dies zu tun ist etwas Kentico ist - in meinem Global.asax ich folgendes registriert haben:

ApplicationConfig.RegisterFeatures(ApplicationBuilder.Current); 

Und das läuft folgendes:

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

Das Entfernen dieser ermöglicht meinem Routing zu kicken und den Controller zu bekommen s hit

Verwandte Themen