我正在尝试开发一个具有多个子域的asp.net站点。我对网站很新,特别是asp.net。然而,似乎通配符子域可以通过dns条目和Web服务器配置的组合进行适当的设置,这在我的开发机器上不会发生。因此我手动在我的Windows主机文件中插入条目:
127.0.0.1 localhost 127.0.0.1 abc.localhost 127.0.0.1 xyz.localhost
但是,当我尝试询问Request.Url属性时,没有可以看到的子域。例如,如果我在浏览器中点击http://abc.localhost:1660 /我从Request.Uri.ToString()获取http:// localhost:1660 /; abc刚刚走了?
我不知道为什么主机文件的工作原理是这样的,但是有什么其他的方法可以用来获得子域到我的本地Web应用程序?谢谢你们。
请注意,我只使用内置的asp.net开发服务器,而不是一个完整的IIS服务器。 (本周末我无法访问完整的IIS,但我仍然想知道是否有帮助。)
解决方法
您可以通过使用“Request.Headers [”HOST“]”获得所需域的子域。这是一个返回当前请求的子域的简单方法。这个方法也假设你的域名就像真正的网页一样,你有一个“.COM”,“.NET”等等。所以你想改变你的HOSTS文件,包括“localhost.com”,“abc.localhost.com”等。
public string subdomain() { string host = Request.Headers["HOST"]; if (!string.IsNullOrEmpty(host)) { var parts = host.Split('.'); if (parts.Length > 2) { return parts[0]; } } return string.Empty; }
我正在搜索这个事情,这里有一篇文章,实际上帮助我弄清楚:
https://web.archive.org/web/20090813174916/http://blogs.securancy.com/post/ASPNET-MVC-Subdomain-Routing.aspx