如何在开发机器上测试子域?abc.localhost

Jos*_*osh 17 windows asp.net iis

我正在尝试开发一个包含多个子域的asp.net站点.我是网站的新手,特别是asp.net.但是,看起来通配符子域是使用dns条目和Web服务器配置的组合正确设置的 - 这在我的开发机器上不会发生.因此我手动在我的Windows 主机文件中插入条目:

127.0.0.1  localhost
127.0.0.1  abc.localhost
127.0.0.1  xyz.localhost
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试询问Request.Url属性时,没有可见的子域.例如,如果我点击http://abc.localhost:1660/了浏览器,我会http://localhost:1660/从中获取Request.Uri.ToString(); 在abc刚刚走了?

我不知道为什么hosts文件的工作方式是这样的,但有没有其他方法可以用来将子域名放到我的本地Web应用程序中?谢谢你们.

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

Joe*_*ite 11

不知道标题,但我使用的一个鲜为人知的技巧是所有127.*地址都是localhost地址,而不仅仅是127.0.0.1.您实际上可以运行一个服务器监听127.0.0.1端口80,另一个Web服务器实例监听127.0.0.2端口80.那么你的名字是127.0.0.1 localhost,127.0.0.2可以是abc.localhost(或abc.mydomain) .com这样你就可以针对本地网络服务器测试真实的实时网址)等.

  • 很棒的提示.从来不知道127.*都是localhost ..酷 (2认同)

Vai*_*arg 11

我使用的是Windows 7,IIS 7.5,VS 2008,SQL Server 2005

我能够在localhost上成功模拟子域名,在etc/hosts中放入以下行

127.0.0.2   myapp.localhost.com
Run Code Online (Sandbox Code Playgroud)

并且,在IIS中,我设置了一个新的网站,对绑定部分进行了以下修改:

Hostname = myapp.localhost.com 
IP address = 127.0.0.2
Run Code Online (Sandbox Code Playgroud)

我还创建了一个新的应用程序池,但没有必要.您可能必须更改用于处理请求的auth用户.我与默认的IIS用户有SQL连接权限错误.

IIS>Application Pools>>Right Click on your pool>Advanced Settings>Identity = LocalSystem
Run Code Online (Sandbox Code Playgroud)


Chr*_*ann 9

您可以使用" Request.Headers ["HOST"] " 获取子域完整的请求域.这是一个返回当前请求的子域的简单方法.此方法还假设您在域之后有一个".COM",".NET"等,就像真实的Web一样.因此,您需要更改您的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;
}
Run Code Online (Sandbox Code Playgroud)

我正在搜索这个问题,这是一篇实际帮助我解决这个问题的文章:https://web.archive.org/web/20090813174916/http: //blogs.securancy.com/post/ASPNET-MVC -Subdomain-Routing.aspx