1

这可能是一个简单的路由问题,但是在快速谷歌之后,我没有点击我在路由上做错了什么。

使用 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 以排除回声路径,但这似乎很笨拙,肯定有更简单的方法吗?


另外,我尝试过使用正则表达式约束,就像下面的问题一样,它不起作用。

使用 WCF ServiceRoute 进行 MVC2 路由:Html.ActionLink 呈现不正确的链接!

4

1 回答 1

0

我最终使用下面的答案在 SignalR 代码中修复了这个问题并提交了一个拉取请求。

添加非mvc路由时Html.ActionLink构造错误链接

https://github.com/SignalR/SignalR/pull/19

于 2011-09-01T01:51:21.317 回答