我正在尝试开发一个有多个子域的asp.net站点。 我是一般的网站,尤其是asp.net的新手。 但是,似乎通配符子域是正确设置与DNS条目和Web服务器configuration的组合 – 这是不会发生在我的开发计算机上。 因此,我手动插入我的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
不知道标题,但我已经使用的一个鲜为人知的技巧是所有的127. *地址是本地主机地址,而不仅仅是127.0.0.1。 你实际上可以运行一个监听127.0.0.1端口80的服务器,而另一个监听127.0.0.2 80端口的web服务器实例。那么你应该命名为127.0.0.1 localhost,127.0.0.2可以是abc.localhost(或者abc.mydomain .com,所以你可以测试真正的本地网络服务器的实时网址)等。
我正在使用Windows 7,IIS 7.5,VS 2008,SQL server 2005
我能够成功地模拟本地主机上的子域,把以下行放在etc / hosts中
127.0.0.2 myapp.localhost.com
并在IIS中设置了一个新的网站,对绑定部分进行了以下修改:
Hostname = myapp.localhost.com IP address = 127.0.0.2
我也创建了一个新的应用程序池,但没有必要。 您可能需要更改用于处理请求的auth用户。 我有默认的IIS用户SQL连接权限错误。
IIS>Application Pools>>Right Click on your pool>Advanced Settings>Identity = LocalSystem