iis 如何在开发计算机上测试子域?abc.localhost

ryoqjall  于 2023-02-04  发布在  其他
关注(0)|答案(3)|浏览(143)

我正在尝试开发一asp.net有多个子域的www.example.com站点。我对网站总体上还是新手,尤其是ASP.NET。然而,通配符子域似乎是通过dns条目和web服务器配置的组合正确设置的--这在我的开发机器上是不会发生的。因此,我手动在我的windowshosts文件中插入条目

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,但我仍然想知道这是否有帮助)。

hgc7kmma

hgc7kmma1#

不知道标头是什么,但我使用过一个鲜为人知的技巧,即所有127.* 地址都是本地主机地址,而不仅仅是127.0.0.1。实际上,您可以运行一个侦听127.0.0.1端口80的服务器,以及另一个侦听www.example.com端口80的Web服务器示例127.0.0.2。因此,您可以将www.example.com命名127.0.0.1localhost,127.0.0.2可以是abc.localhost(或abc.mydomain.com,以便您可以针对本地Web服务器测试真实的的URL)等。

q3qa4bjr

q3qa4bjr2#

我正在使用Windows 7,IIS 7.5,VS 2008,SQL Server 2005
我可以通过在etc/hosts中放置以下代码行成功地在localhost上模拟子域

127.0.0.2   myapp.localhost.com

并且,在IIS中,我建立了一个新网站,对bindings部分做了如下修改:

Hostname = myapp.localhost.com 
IP address = 127.0.0.2

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

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

w46czmvw3#

您可以通过使用“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;
}

我正在搜索这件事,这里有一篇文章,这是什么实际上帮助我弄清楚了:https://web.archive.org/web/20090813174916/http://blogs.securancy.com/post/ASPNET-MVC-Subdomain-Routing.aspx

相关问题