Aha!,它花了一些小把戲(和舊書中的一個高峯),但我想我已經解決了它。
您需要創建自定義路由約束。 這是我很快做出了一個:
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") }
);
等等等等。我不知道你的路線如何佈局,但問題是現在你可以爲主機名分開路線。這應該使你能夠做你以後的事情。
你先生是我的英雄!我只是測試了這個,它的工作完美。 – 2010-12-09 04:21:09
這太棒了。究竟是我在尋找什麼。我正在創建一個可以託管域名重定向的網站。我希望網站能夠管理域名以及重定向。添加具有此約束的路由允許我在主機域下具有正常站點,並且任何其他域都將相應地重定向。謝謝! – 2013-12-19 07:02:11