网址未点击任何操作

时间:2017-06-29 10:21:36

标签: c# asp.net-mvc url-routing kentico

我有以下由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" });

我希望上面的url能够触及预览控制器,或者至少捕获所有内容,但是两个控制器都没有被命中,我只是找不到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 个答案:

答案 0 :(得分:0)

好的我发现这与Kentico所做的事情有关 - 在我的Global.asax中我注册了以下内容:

ApplicationConfig.RegisterFeatures(ApplicationBuilder.Current);

这会运行以下内容:

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

删除它允许我的路由启动并且控制器被点击