新路由将URL重新写入默认路由,SignalR停止连接

时间:2018-11-23 14:17:57

标签: angularjs asp.net-mvc signalr

我尝试在RouteConfig.cs中添加一条名为“ CustRoute”的路由,唯一出现的其他路由是默认路由。

 public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "CustRoute",
                url: "{cust}/{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                constraints: new { cust = new CustConstraint() }
            ).RouteHandler = new CustMvcRouteHandler();

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }

加载页面时,URL恢复为默认值。页面已加载,但我也无法连接到SignalR。 例如,如果我转到www.example.com/Cust/Home,它将在加载页面时将URL更改为www.example.com/Home

1 个答案:

答案 0 :(得分:3)

经过更多调查后,我修复了该问题,原因是AngularJS代码中的ngRoute引起了问题,因为<base>元素中的HTML <head>标记未解决{{ 1}}。

ngRoute使用/Cust/标签来路由URL(credit to this answer for the info)。

我通过将<base>更改为<base href="@(Request.ApplicationPath)"/>来解决了这个问题。