第一:
我确实阅读并尝试实施this和this和that,但我完全失败了:(
我的路线是这样的:
routes.MapRoute(
"DefaultRoute",
"{calurl}/{controller}/{action}/{id}",
new { calurl = "none", controller = "Subscriber", action = "Index", id = UrlParameter.Optional }
);
而我正试图用作
"{calurl}.domain.com",
"{controller}/{action}/{id}"
所以路由值calurl总是来自子域.
我可以有如下链接:
http://demo.domain.com/Subscriber/Register
截至今天我有
http://domain.com/demo/Subscriber/Register
我试过了什么
我尝试使用上面的链接示例创建我自己的CustomRoute(所有3个,一次一个),我最终总是搞砸一切.
而且我一直在想,只需将RouteValue [“calurl”]更改为子域即可.
What/How can I do this?
最佳答案 我不确定路由是否扩展到实际域名,因为域或子域不应对站点/应用程序的工作产生任何影响.
我建议在每个请求上构建自己的子域检测.这使路由和子域检测分开,有助于测试等.
这可能有所帮助:
public static string GetSubDomain()
{
string subDomain = String.Empty;
if (HttpContext.Current.Request.Url.HostNameType == UriHostNameType.Dns)
{
subDomain = Regex.Replace(HttpContext.Current.Request.Url.Host, "((.*)(\\..*){2})|(.*)", "$2").Trim().ToLower();
}
if (subDomain == String.Empty)
{
subDomain = HttpContext.Current.Request.Headers["Host"].Split('.')[0];
}
return subDomain.Trim().ToLower();
}