Asp.net 使用MVC3路由子域
我想为我的一些客户创建一项服务,使他们能够在我创建的MVC3网站上拥有自己的网页 我希望企业能够有一个类似www.BusinessName.mydomain.com的url 是否可以在MVC3中创建一条允许我这样做的路由 谢谢你的帮助 好吧,我想我已经走得更远了 理想情况下,我希望能够在IIS中为子域使用通配符,但从我所做的研究来看,这似乎是不可能的 我已手动将www.mycompany.mydomain.com添加到IIS中,并更新了my global.ascx以包含此内容Asp.net 使用MVC3路由子域,asp.net,asp.net-mvc-3,iis-7,asp.net-mvc-routing,Asp.net,Asp.net Mvc 3,Iis 7,Asp.net Mvc Routing,我想为我的一些客户创建一项服务,使他们能够在我创建的MVC3网站上拥有自己的网页 我希望企业能够有一个类似www.BusinessName.mydomain.com的url 是否可以在MVC3中创建一条允许我这样做的路由 谢谢你的帮助 好吧,我想我已经走得更远了 理想情况下,我希望能够在IIS中为子域使用通配符,但从我所做的研究来看,这似乎是不可能的 我已手动将www.mycompany.mydomain.com添加到IIS中,并更新了my global.ascx以包含此内容 public
public class SubDomainRoute : RouteBase
{
public override RouteData GetRouteData(HttpContextBase httpContext)
{
var url = httpContext.Request.Headers["HOST"];
var subDomain = Helpers.Helpers.GetSubDomain(url);
if (subDomain==null)
return null;
var routeData = new RouteData(this, new MvcRouteHandler());
switch (subDomain)
{
case "mycompany":
routeData.Values.Add("controller", "SubDomain");
routeData.Values.Add("action", "Index");
break;
default:
routeData.Values.Add("controller", "Home");
routeData.Values.Add("action", "Index");
break;
}
return routeData;
}
public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
{
return null;
}
}
因此,现在我可以浏览www.mycompanyname.mydomain.com并加载正确的控制器
我现在有两个问题
如果我浏览www.mission.mydomain.com,我会得到一个502错误。如果找不到www.mission.mydomain.com,我可以在IIS中如何重定向到www.mydomain.com
一旦我浏览了www.mycompanyname.mydomain.com,我的主菜单中的所有链接现在都指向www.mycompanyname.mydomain.com/contactus,这是错误的,如何确保菜单项未使用url中的子域?我建议使用稍微不同的方法-唯一需要注意的是,此网站必须是IIS上唯一的网站。因为IIS不支持通配符主机头,所以它必须是默认网站 这样,您将把所有请求(包括www.mission.mydomain.com)送到应用程序的前门,并且您可以适当地处理它们 在MVC应用程序中,不要对子域使用路由,请使用应用程序_BeginRequest。在这里,您可以处理Request.Headers[“HOST”]并将它们发送到您想要的地方
在我看来,路由是用来在用户到达站点时路由用户,而不是决定用户访问哪个站点…我建议一种稍微不同的方法-唯一需要注意的是,此网站必须是IIS上唯一的网站。因为IIS不支持通配符主机头,所以它必须是默认网站 这样,您将把所有请求(包括www.mission.mydomain.com)送到应用程序的前门,并且您可以适当地处理它们 在MVC应用程序中,不要对子域使用路由,请使用应用程序_BeginRequest。在这里,您可以处理Request.Headers[“HOST”]并将它们发送到您想要的地方
在我看来,路由是指当用户到达站点时用于路由用户,而不是决定哪个站点用户正在访问…谢谢Vnuk。我确实有几个其他网站在同一个盒子上运行。否则你的建议就有意义了。我确实有几个其他网站在同一个盒子上运行。否则你的建议就有意义了