首页 新闻 会员 周边 捐助

关于Asp.Net MVC5 Area 路由规则问题

0
悬赏园豆:100 [已解决问题] 解决于 2016-01-22 15:45
  • 请教一个mvc 路由的问题,我现在遇到一个路由规则的问题,
  • 主站点域名domain.com和www.domain.com,
  • area下有几个子站点,
  • A目录-->a.domain.com,
  • B目录-->b.domain.com,
  • C目录-->c.domain.com,
  • 并且a.domain.com还有3级域名,
  • 比如x.a.domain.com就是展示X用户的相关内容,
  • y.a.domain.com就是展示Y用户的相关内容,请问这样需要怎么去写?非常感谢。
  • 在网上找了一下,看到前辈写的DomainRoute,我的情况跟他们的都有一点出入。
Engineer的主页 Engineer | 菜鸟二级 | 园豆:331
提问于:2015-04-24 09:50
< >
分享
最佳答案
0

请问你这三个伪域名,功能实现了吗,就是指向Areas文件夹里的那三个?

收获园豆:50
king2003 | 初学一级 |园豆:161 | 2015-04-24 10:42

已经实现了,DomainRoute不用修改,但是只是访问了各个域名的首页,我不知道会不会有其他问题。

routes.Add(
             "DomainRoute", new DomainRoute(
             "domain.com",
             "{controller}/{action}/{id}",
             new
             {
                 controller = "Home",
                 action = "Index",
                 id = UrlParameter.Optional,
                 Namespaces = new[] { "Portal.Controllers" }
             }
           ));

            routes.Add(
            "WWWDomainRoute", new DomainRoute(
            "www.domain.com",
            "{controller}/{action}/{id}",
            new
            {
                controller = "Home",
                action = "Index",
                id = UrlParameter.Optional,
                Namespaces = new[] { "Portal.Controllers" }
            }
          ));

            routes.Add("DomainRouteForMutiWebSite", new DomainRoute(
                "{area}.domain.com",                             // {area}作为二级域名
                "{controller}/{action}/{id}",                  // URL with parameters
                new
                {
                    area = "TZ",
                    controller = "Home",
                    action = "Index",
                    id = "",
                    Namespaces = new[] { "Portal.Areas.TZ.Controllers" }
                }  // Parameter defaults
            ));

            routes.Add("DomainRouteForMutilDomain", new DomainRoute(
              "{ShopName}.{area}.domain.com",                             // {ShopName}作为3级域名
              "{controller}/{action}/{id}",                  // URL with parameters
              new
              {
                  ShopName = "",
                  area = "B2B",
                  controller = "Shops",
                  action = "Index",
                  id = UrlParameter.Optional,
                  Namespaces = new[] { "Portal.Areas.B2B.Controllers" }
              }
            ));

然后把Area中的RegisterArea取消了。

Engineer | 园豆:331 (菜鸟二级) | 2015-04-24 10:49
其他回答(3)
0

改一下domianroute吧,应该是一个思路的,

不过你下面那个areas里的3级域名不现实吧.要是一个X用户打开了Y.a.domian.com呢

收获园豆:50
吴瑞祥 | 园豆:29449 (高人七级) | 2015-04-24 10:01

是这样的,X.a.domin.com是显示的X用户的相关内容,Y.a.domain.com显示的Y用户的相关内容,任何人都可以访问,上面的内容可能表述有点问题。

支持(0) 反对(0) Engineer | 园豆:331 (菜鸟二级) | 2015-04-24 10:03
0

楼主问题解决了吗?

success365 | 园豆:226 (菜鸟二级) | 2016-01-27 19:12
0

内容不错,学习了。

爬虫程序大魔王 | 园豆:106 (初学一级) | 2017-04-20 08:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册