Asp.net mvc 3 ASP.NET MVC 3:使用Global.asax MapRoutes将单个客户端站点迁移到多客户端站点?

Asp.net mvc 3 ASP.NET MVC 3:使用Global.asax MapRoutes将单个客户端站点迁移到多客户端站点?,asp.net-mvc-3,Asp.net Mvc 3,我有一个网站,最初是为一个客户的客户,但现在正在调整,以服务于多个客户的客户。因为该站点可以匿名使用(身份验证提供了增强的功能,但不是使用该站点所必需的),所以我需要能够通过访问某个URL来设置“公司ID” 为了实现这一点,我在我的global.asax中添加了一个MapRoute,并使用它在特定公司的页面登陆时(例如)在会话中设置公司ID。到达后,my SetCompany操作在会话中设置公司ID,然后传递到默认的主/索引视图。所有后续页面都返回默认的{controller}/{action}

我有一个网站,最初是为一个客户的客户,但现在正在调整,以服务于多个客户的客户。因为该站点可以匿名使用(身份验证提供了增强的功能,但不是使用该站点所必需的),所以我需要能够通过访问某个URL来设置“公司ID”

为了实现这一点,我在我的global.asax中添加了一个MapRoute,并使用它在特定公司的页面登陆时(例如)在会话中设置公司ID。到达后,my SetCompany操作在会话中设置公司ID,然后传递到默认的主/索引视图。所有后续页面都返回默认的{controller}/{action}/{id}路由,会话中存储的公司id允许相应地设置UI和其他自定义设置。这非常有效,除非当用户在会话过期后尝试执行某些操作时,网站不再知道公司ID,并返回到默认的UI和设置

如果我将默认路由更改为companys/{CompanyID}/{controller}/{action}/{id},并相应地更改所有操作上的URL,这会起作用吗?有更好的方法吗

        routes.MapRoute(
            "Companies",
            "Companies/{CompanyID}",
            new { controller = "Home", action = "SetCompany" }
        );

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );