Вероятно, это просто проблема маршрутизации, но после быстрого поиска в Google я не понял, что я делаю неправильно с маршрутизацией.
При использовании 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}");
В этом порядке я получаю 404, когда js-клиент SignalR подключается к / echo / url.
Если я поменяю местами маршрутизацию MVC и SignalR по умолчанию, js-клиент SignalR подключится к/ echo / url и SignalR работают правильно, но маршруты переписываются неправильно при отображении в представление, т.е.
/echo?action=Index&controller=Home
Я что-то упускаю из виду?Я смотрю на ExclusionConstraints, чтобы исключить путь эха, но это кажется неуклюжим, конечно, есть более простой способ?
Кроме того, я попытался использовать ограничение Regex, как в следующем вопросе, который не работает,
Маршрутизация MVC2 с помощью WCF ServiceRoute: Html.ActionLink отображает неверные ссылки!