我试图开发一个具有多个子域的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
就这么消失了?!
我不知道为什么hosts文件是这样工作的,但是有没有其他方法可以让我的子域进入我的本地web应用程序呢?谢谢你们所有人。
请注意,我只使用内置的asp.net开发服务器,而不是完整的iis服务器。(这个周末我无法访问完整的IIS,但我仍然想知道这是否会有帮助。)
发布于 2009-08-18 00:04:05
您可以使用"Request.Headers"HOST"“获取请求的域名,但子域保持不变。”下面是一个简单的方法,它返回当前请求的子域。这个方法还假设你在域名后面有一个".COM",".NET“等,就像真实的网站一样。因此,您需要更改主机文件,使其包含"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
发布于 2009-05-16 17:55:01
我不知道报头,但我使用的一个鲜为人知的技巧是,所有的127.*地址都是本地主机地址,而不仅仅是127.0.0.1。实际上,您可以运行一个监听127.0.0.1端口80的服务器,并运行另一个监听127.0.0.2端口80的can服务器实例。因此,您可以命名为127.0.0.1本地主机,127.0.0.2可以是abc.localhost (或abc.mydomain.com,这样您就可以在本地etc服务器上测试真实的实时URL),依此类推。
发布于 2009-10-09 09:05:13
我使用的是Windows 7、IIS 7.5、VS 2008、SQL server 2005
我成功地在本地主机buy上模拟了子域,在etc/hosts中放入以下代码行
127.0.0.2 myapp.localhost.com
并且,在IIS中,我设置了一个新网站,对绑定部分进行了以下修改:
Hostname = myapp.localhost.com
IP address = 127.0.0.2
我还创建了一个新的应用程序池,但这不是必需的。您可能需要更改用于处理请求的身份验证用户。我与默认IIS用户之间存在SQL连接权限错误。
IIS>Application Pools>>Right Click on your pool>Advanced Settings>Identity = LocalSystem
https://stackoverflow.com/questions/872868
复制相似问题