我们在内部服务器上托管了几个不同的域。它们都代表我们公司拥有的不同品牌,我们希望在每个域之间进行集成,共享模型,视图,资源等。
我想做的是将{Controller}作为实际域名,因此它看起来像 http:// {Controller} .com / {Action} / {Id} 。< / p>
这可能吗?我见过人们用子域做到了。
AND,是否值得,或者有更简单的方法来实现同样的目标。
如果是这样,有没有人对如何在Localhost上测试它有任何建议?
答案 0 :(得分:2)
是的,基于子域的路由可能并非完全不同。如果您查看this example,他会查看Host
标题,并在'。'上分割。然后获取数组中的第一个元素。你只需要获取该数组中的倒数第二个元素(因为“com”是最后一个元素)。基本上,在GetRouteData
覆盖中,您可以执行以下操作:
// Retrieve the url - and split by dots:
var url = httpContext.Request.Headers["HOST"];
var urlParts = url.Split(".");
var routeData = new RouteData(this, new MvcRouteHandler());
routeData.Values.Add("controller", urlParts[urlParts.Count - 2]);
(此处不包括错误检查和验证,显然)
至于在localhost上进行测试,您只需将要测试的域名添加到hosts文件中,指向127.0.0.1。