【问题标题】:ASP.NET MVC routing issue with Piranha CMSPiranha CMS 的 ASP.NET MVC 路由问题
【发布时间】:2014-11-12 06:24:05
【问题描述】:

我正在尝试将 Piranha CMS 集成到现有的 ASP.NET MVC 网站中。我已成功将我的 Web 应用程序转换为使用 .net 4.5 MVC5(最初是 .net 4.0、MVC4)。我添加了 PiranhaCMS.Mvc 包,它传递地添加了 PiranhaCMS.Core 包。

getting-started 指南声明将passiveMode 设置为true。但我更喜欢同时使用我的和 Piranha CMS 路由机制。因此我将passiveMode 设置为false。我的 Web.config 如下:

<piranha>
    <settings>
      <managerNamespaces value="" />
      <disableManager value="false" />
      <disableTypeBuilder value="false" />
      <passiveMode value="false" />
      <prefixlessPermalinks value="false" />
    </settings>
    <providers>
      <mediaProvider value="Piranha.IO.LocalMediaProvider, Piranha" />
      <mediaCacheProvider value="Piranha.IO.LocalMediaCacheProvider, Piranha" />
      <cacheProvider value="Piranha.Cache.WebCacheProvider, Piranha" />
      <logProvider value="Piranha.Log.LocalLogProvider, Piranha" />
    </providers>
</piranha>

我的 RouteConfig.cs 包含以下内容:

routes.MapRoute("Default", "{controller}/{action}/{id}",
    new {controller = "Home", action = "Index", id = UrlParameter.Optional},
    new[] {"xxx.xxx.xxx.Controllers"}
    ).DataTokens["UseNamespaceFallback"] = false;

我可以通过“http://dev.test.com/manager”访问管理器控制台。但是当我尝试访问现有的主要网站“http://dev.test.com”时,我收到一个 404 错误,请求的 URL:/page

我不知道 /page 是什么。我还尝试在管理器控制台上创建一个页面,其永久链接为“http://dev.test.com/home/enews”。访问后者时,它似乎被重定向了,我得到了与上面相同的 404 错误,请求的 URL:/page。

请注意,当我将passiveMode 设置为true 时,我可以访问我现有的主要网站“http://dev.test.com”。我非常期待将 Piranha CMS 集成到我现有的应用程序中,并希望得到某人的指导。

【问题讨论】:

    标签: asp.net-mvc piranha-cms


    【解决方案1】:

    当您使用模板项目(即 PiranhaCMSMvc)创建应用程序时,您会在项目中获得两个基本的控制器模板,一个用于显示页面,一个用于显示帖子。当您简单地添加 Piranha.Mvc 包时,您不会获得任何模板文件。

    当您导航到 http://dev.test.com 时,Piranha CMS 路由找到起始页面,然后将其路由到默认模板中的 ~/page将是 PageController。由于找不到此控制器,您会收到 404 错误。

    最简单的入门方法是使用 PiranhaCMSMvc NuGet 包创建一个新的空白应用程序,并查看包含的控制器。然后,您可以将它们复制到您现有的应用程序中。

    最好的问候

    哈坎

    【讨论】:

    • 感谢您回来 Hakan。我按照您的建议创建了一个空白 MVC 应用程序(请注意,您有 3 个初始页面:localhost、localhost/Home/about、localhost/Home/Contact)并添加了 PiranhaCmsMvc 项目。当我浏览localhost 时,我获得了主要的piranha 页面,而不是之前的asp mvc 默认页面。我无法再访问 localhost/Home/about、localhost/Home/Contact 页面并获得 404 错误 - MODULE_SET_RESPONSE_ERROR_STATUS - __DynamicModule_Piranha.Web.ApplicationModule, Piranha, Version=2.2.5358.37284, Culture=neutral, PublicKeyToken=null_6​​bd47a41-148a- 4809-8127-0
    • 当你说“PiranhaCMS 路由找到起始页,然后路由到 ~/page”时,我们有什么方法可以阻止路由到 ~/page,因为我已经有了我的主页我想在访问应用程序根 url 时呈现?似乎对 ~// 的调用不再返回在相应的路由控制器/动作方法中定义的视图,而是上面突出显示的 404 错误页面。但是,当我定义了一个特定的路由 url,比如说 ~/contact-us 并将其映射到 HomeController 和操作方法“Contact”时,链接 ~/contact-us 工作得很好。
    猜你喜欢
    • 2014-04-14
    • 2020-08-30
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 2011-11-30
    • 2013-06-07
    相关资源
    最近更新 更多