我有一个复合C1网站 - 工作正常。有些页面使用MVC播放器 - 工作正常 - 以及网站上的所有页面 - 除了导致路由冲突的博客。
Error: The incoming request does not match any route.
C1 Function: Composite.AspNet.MvcPlayer.Render
Error details:
Exception has been thrown by the target of an invocation.
The incoming request does not match any route.
此错误出现在页面顶部 - 博客在错误下工作正常 - 我只需要摆脱此错误的原因。我想MVC控制器正在尝试路由博客页面,因为它认为它们不存在&无法找到控制器。
如何让控制器忽略博客 - 或以其他方式解决此问题?
答案 0 :(得分:0)
简短回答是两个项目(博客和mvc播放器)都在争夺您网址的路径部分。他们都希望自己拥有路径来做路由。
示例:/en/Blog
/2011/11/29/Chamonix-To-Courmayeur-Skiing-Day-Trips
/ en / Blog部分将您引导至托管您博客的页面,而其余部分则是传递给您可能在页面上托管的任何功能的路径信息。由于路径是“一件事”,因此该字符串是用于博客功能还是MVC播放器功能没有区别。这就是造成混乱的原因。
如果您希望按原样离开博客,可以通过两种方式解决此问题:
通过编辑~/App_Code/Composite/AspNet/MvcPlayer/Player.cs
并注释掉这一行(第57行),可以快速完成第二种解决方法
Path = PathInfo;
在此之前请注意,这会影响所有正在运行的MvcPlayer实例。
要创建一个新的替代MvcPlayer,它不依赖于路由(保留原始的完整),请执行以下操作:
Player.cs
复制到NoRoutePlayer.cs
(并相应地重命名该类)并在那里进行上述更改(注释第57行)。通过该更改,您将拥有一个播放器功能和一个NonRoutingPlayer功能,然后您可以使用后者来运行您的MVC控制器,每个人都应该相处得很好:)