Ага !, потребовалось немного возиться (и вершина и старая книга), но я думаю, что я решил это.
Вам необходимо создать собственное ограничение маршрута.
Это тот, который я сделал быстро:
public class hostnameConstraint : IRouteConstraint
{
protected string _hostname;
public hostnameConstraint (string hostname)
{
_hostname = hostname;
}
bool IRouteConstraint.Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
if (httpContext.Request.Url.Host == _hostname)
return true;
return false;
}
}
Затем вы просто добавляете его в свои маршруты и указываете, к какому имени хоста вы хотите применить маршрут. вот так:
routes.MapRoute(
"ImageGallery", "{controller}/{action}",
new { controller = "Home", action = "Index"},
new { hostname = new hostnameConstraint("webhost1.com") }
);
routes.MapRoute(
"ImageGallery", "{controller}/{action}",
new { controller = "Home", action = "Index"},
new { hostname = new hostnameConstraint("webhost2.com") }
);
и так далее и тому подобное. Я не знаю, как планируются ваши маршруты, но суть в том, что теперь вы можете иметь отдельные маршруты для имен хостов. Что должно позволить вам делать то, что вы хотите.