2011-09-01 34 views
1

这可能是一个简单的路由问题,但在一个快速谷歌后,我没有点击我做错了路由。当呈现的操作链接返回为查询字符串时,如何修复MVC3的路由问题?

使用SignalR时,路由MapConnection会破坏默认的MVC路由渲染。

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" }); 

// default MVC 
routes.MapRoute("Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 
// SignalR routing 
routes.MapConnection<EventConnection>("echo", "echo/{*operation}"); 

按照这个顺序,当SignalR js客户端连接到/ echo/url时,我得到了一个404。

如果我身边换了默认MVC和SignalR路由,该SignalR JS客户端连接到/回声/ URL和正确SignalR功能,但是当渲染到视图即

/echo?action=Index&controller=Home 

上午我的路线是正确改写错过明显的东西?我正在查看ExclusionConstraints以排除回声路径,但这看起来很沉重,肯定有一个更简单的方法?


此外,我已经尝试使用正则表达式约束像在下面的问题,这是行不通的。

MVC2 Routing with WCF ServiceRoute: Html.ActionLink rendering incorrect links!

回答