代码之家  ›  专栏  ›  技术社区  ›  Josh

如何在开发机器上测试子域?本地主机

  •  17
  • Josh  · 技术社区  · 15 年前

    我正在尝试开发一个包含多个子域的ASP.NET站点。我一般不熟悉网站,尤其是ASP.NET。但是,通配符子域似乎是通过DNS条目和Web服务器配置的组合正确设置的——这在我的开发机器上不会发生。因此,我要手动在我的窗口中插入条目 主机文件 :

    127.0.0.1  localhost
    127.0.0.1  abc.localhost
    127.0.0.1  xyz.localhost
    

    但是,当我试图审问 请求URL 属性没有要查看的子域。例如,如果我点击 http://abc.localhost:1660/ 在浏览器中 http://localhost:1660/ Request.Uri.ToString() ; abc 就这样消失了吗?!

    我不知道hosts文件为什么这样工作,但是有没有其他方法可以用来将子域放入本地Web应用程序?谢谢大家。

    请注意,我只使用内置的ASP.NET开发服务器,而不使用完整的IIS服务器。(本周末我无法访问完整的IIS,但我仍然想知道这是否有帮助。)

    3 回复  |  直到 9 年前
        1
  •  9
  •   p.campbell    9 年前

    您可以使用“ request.headers[“主机”] “。下面是一个返回当前请求的子域的简单方法。此方法还假定域之后有一个“.com”、“.net”等,就像真实的Web一样。因此,您需要将主机文件更改为包含“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

        2
  •  11
  •   Joe White    15 年前

    不知道头的情况,但我使用的一个鲜为人知的技巧是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,这样您就可以根据本地Web服务器测试真实的活动URL),等等。

        3
  •  9
  •   Vaibhav Garg    15 年前

    我使用的是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
    

    我还创建了一个新的应用程序池,但这不是必需的。您可能需要更改用于处理请求的身份验证用户。我对默认的IIS用户有SQL连接权限错误。

    IIS>Application Pools>>Right Click on your pool>Advanced Settings>Identity = LocalSystem