【发布时间】:2016-03-16 19:05:38
【问题描述】:
我正在开发一个带有 Areas 的 MVC5 项目。我的计划是将这一代码库发布到 3 个不同的 IIS Web 服务器中。我想过使用子域将用户路由到指定的应用程序。
- 服务器 1 - App1.myweb.com
- 服务器 2 - App2.myweb.com
- 服务器 3 - App3.myweb.com
区域(App1、App2、App3)
下面的子域类为我提供了 URL 子域,但我不知道如何将流量路由到正确的区域。
SubdomainRoute.cs
public class SubdomainRoute : RouteBase
{
public override RouteData GetRouteData(HttpContextBase httpContext)
{
if (httpContext.Request == null || httpContext.Request.Url == null)
{
return null;
}
var host = httpContext.Request.Url.Host;
var index = host.IndexOf(".");
string[] segments = httpContext.Request.Url.PathAndQuery.TrimStart('/').Split('/');
if (index < 0)
{
return null;
}
var subdomain = host.Substring(0, index);
string[] blacklist = { "www", "demo", "mail" };
if (blacklist.Contains(subdomain))
{
return null;
}
string controller = (segments.Length > 0) ? segments[0] : "Home";
string action = (segments.Length > 1) ? segments[1] : "Index";
var routeData = new RouteData(this, new MvcRouteHandler());
routeData.Values.Add("controller", controller);
routeData.Values.Add("action", action);
routeData.Values.Add("subdomain", subdomain);
return routeData;
}
public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
{
return null;
}
}
RouteConfig.cs
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.Add(new SubdomainRoute());
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
我从http://benjii.me/2015/02/subdomain-routing-in-asp-net-mvc/ 找到了此代码,但我需要路由到区域。
如何使用 SubdomainRoute.cs 中的子域值路由到我的区域?
请指教。谢谢。
【问题讨论】:
标签: asp.net-mvc-5 asp.net-mvc-areas