【问题标题】:Choose route by domain name按域名选择路由
【发布时间】:2017-05-09 20:15:52
【问题描述】:

我有 2 个域名指向由 IIS7 托管的 MVC 应用程序。我需要将它们分开(这就是为什么我没有将 1 转发给另一个的原因)。所以基本上,如果你键入 www.1.com 或 www.2.com,你将进入相同的 MVC 应用程序,但 URL 会有所不同。一直跟着我?

我想做的是根据 URL 调用不同的控制器/路由。这是我可以在 Global.asax 中配置的吗?如果有,怎么做?

类似...

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

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

谢谢!

【问题讨论】:

  • 据我所知。相反,我会让 IIS 中的 UrlRewrite 像这样重写您的 URL:http://www.2.com/2/{controller}...etc 其中域之后的 2 是要重写的 {HTTP_HOST} 参数。然后,您可以在 MVC 中将该部分作为您的路线。
  • 似乎是一个不错的解决方案。安装和使用 ext 是否有损坏我现有 IIS 设置的风险?
  • 不,如果它导致问题,禁用/卸载非常简单。

标签: asp.net-mvc asp.net-mvc-3


【解决方案1】:

您可以使用域路由选项,只需试试这个....

routes.Add("DomainRoute", new DomainRoute( 
   "{customer}.example.com", // Domain with parameters 
   "{action}/{id}",    // URL with parameters 
   new { controller = "Home", action = "Index", id = "" }  // Parameter 
   defaults 
))

【讨论】:

    【解决方案2】:

    我的理解是,您正在尝试使用 ASP.NET 构建多租户应用程序。为此,您只需按以下方式调整 IIS 主机标头。

    1. 在 IIS 中配置指向应用程序已发布版本的网站。
    2. 现在您可以编辑该网站的“绑定信息”,并可以为该网站添加尽可能多的域绑定。即 www.domain1.com、www.domain2.com
    3. 最后一步为每个域配置 A 或 CNAME 记录以指向此 IIS 服务器 IP。

    如果需要根据请求的域名加载设置/主题/模块,您可以进一步阅读我的详细博客http://www.dotnetexpertguide.com/2012/04/aspnet-iis-dns-records-sub-domain-on.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      • 2017-11-11
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 2021-02-08
      相关资源
      最近更新 更多