ASP.NET MVC 的 Piranha CMS 路由问题
Posted
技术标签:
【中文标题】ASP.NET MVC 的 Piranha CMS 路由问题【英文标题】:Piranha CMS routing issue with ASP.NET MVC 【发布时间】:2014-04-14 11:49:51 【问题描述】:我正在尝试将 Piranha CMS (v2.2.0) 与现有的 ASP.NET MVC 应用程序集成。我可以运行所有原始应用程序页面和 CMS 管理器页面。我还可以查看由 CMS 管理的页面草稿,但是当我尝试查看从 CMS 托管的实时页面版本时,我收到 HTTP 404“找不到资源”消息。
所以以下草稿网址有效:
http://localhost:5316/draft/start
但以下实时网址失败:
http://localhost:5316/home/start
原始应用程序确实有一个“Home”控制器,我尝试将其重命名为“Test”,以防出现冲突问题。我可以看到新的“测试”定位内容,但 /home/start url 仍然失败。
按照建议,我的 RouteConfig 代码是:
routes.MapRoute(
name: "Default",
url: "controller/action/id",
defaults: new controller = "Home", action = "Index", id = UrlParameter.Optional ,
namespaces: new[] "Maps.Portal.Controllers"
).DataTokens["UseNamespaceFallback"] = false;
我的 web.config 设置是:
<settings>
<managerNamespaces value="" />
<disableManager value="false" />
<passiveMode value="true" />
<prefixlessPermalinks value="false" />
</settings>
我尝试将 prefixlessPermalinks 设置为 true,但这没有帮助。
我猜 Piranha CMS 没有捕捉到自己托管的页面的路由?有什么想法吗?
【问题讨论】:
【参考方案1】:通过查看您的配置,我可以看到您已遵循为现有项目设置 Piranha CMS 的指南,将 passiveMode 设置为 true。让我澄清一下这个参数的作用。
被动模式用于您仅希望将 Piranha CMS 用作后端内容存储而不处理任何路由的应用程序。这意味着此参数有效地关闭了系统中所有指向永久链接的 url,以免干扰应用程序的现有路由。
如果您想将现有的应用程序控制器与仅由 Piranha CMS 生成的页面混合,您必须将 passiveMode 设置为 false,这将使永久链接的路由再次处于活动状态。
完成此操作后,您将能够访问带有或不带有无前缀永久链接的页面。
问候
哈坎
【讨论】:
感谢 Håkan - 非常感谢。我确定我已经尝试过了,但又试了一次,效果很好。我想我可能因为与我自己的 Home 控制器发生冲突而尝试过并被拒绝了。我还将 prefixlessPermalinks 设置为 true,这使我可以继续使用现有的 Home 控制器,而不会与 CMS 发生冲突。 @Hakan 可能值得在您的文档中澄清这一点 - 而不是说You should also set the Piranha CMS Web.config setting passiveMode to true.
,建议人们对于新应用程序不要理会此设置以上是关于ASP.NET MVC 的 Piranha CMS 路由问题的主要内容,如果未能解决你的问题,请参考以下文章