这可能是一个简单的路由问题,但是在快速谷歌之后,我没有点击我在路由上做错了什么。
使用 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 客户端连接到 /echo/ url 并且 SignalR 功能正确,但是当渲染到视图时,路由被错误地重写,即
/echo?action=Index&controller=Home
我错过了一些明显的东西吗?我正在查看 ExclusionConstraints 以排除回声路径,但这似乎很笨拙,肯定有更简单的方法吗?
另外,我尝试过使用正则表达式约束,就像下面的问题一样,它不起作用。