子域实现在MVC 5应用程序中

时间:2015-07-29 08:33:02

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 azure model-view-controller

我们正在开发MVC 5应用程序。假设主站点像www.sport.com

现在我们要创建 3子域,如cricket.sport.com,football.sport.com和hockey.sport.com

这3个子站点的大多数功能都是相同的。

我们实施了两种方法:

方法1:为每个板球/足球/曲棍球创建3个区域。但这将创建代码冗余。所以每当请求来自网址时,我们会检查并转发请求到特定区域。

方法2:创建单个控制器 - 检查URL子域并根据每个请求重定向并显示特定视图。在这种方法中,每次我们需要检查请求子域并转发到同一个域。

在MVC应用程序中实现子域的最佳方法是什么?

我们希望在Windows Azure上部署此站点。

1 个答案:

答案 0 :(得分:0)

implement sub domain你的意思并不是很清楚。

如果您尝试在不同的子域中托管相同的视图并期望它们以不同的方式工作,那么您应该在web.config或其他设置中有一些内容,然后告诉每个站点它是什么。

类似的东西:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>        
    <appSettings>
      <add key="AppType" value="criket" />
    </appSettings>
</configuration>

然后在你的应用程序中你会做:

if(ConfigurationSettings.AppSettings["AppType"] == "cricket")
{
   //do cricket app specific stuff 
} else { /* do something else */ }

如果整件事情不需要动态,你也可以有一个构建符号:

//uncomment or comment accordingly
#define CRIKET 
//#define FOOTBALL 

    public class HomeController
    {
        public ActionResult Index()
        {
#if CRICKET
            return View("Cricket");
#elif FOOTBALL
            return View("Football");
#endif
        }
    }

配置设置比构建符号慢,但它为您提供动态方法。根据您的需要选择。