在localhost上测试子域

时间:2013-04-05 14:40:25

标签: c# asp.net

我想在asp.net网站上测试一些子域功能。我只是编辑主机文件并添加127.0.0.1 subdomain.domain.com,这应该工作。

但我的似乎没有。我刷新了dns,重新启动,尝试了新的浏览器,仍然得到错误500.

当我从Visual Studio正常运行asp.net站点时,它转到http://localhost:17365/。我如何获得此IP地址?

我想我没有全面了解并遗漏了一些碎片。

我运行netstat -n并看到该网站正在[:: 1]运行:17365也许这就是为什么它不能在ipv4下工作?

10 个答案:

答案 0 :(得分:5)

在Visual Studio中,当您开始运行网站时,首先将Website Properties > Use Dynamic Ports更改为False,然后将Port Number设置为80,然后再运行。

默认情况下会启动http://localhost:80,然后在浏览器中访问浏览器中的subdomain.domain.com,它会指向您网站的调试实例(假设您仍然拥有127.0.0.1 subdomain.domain.com在您的主机文件中)。

答案 1 :(得分:4)

解决方案非常简单。 在您编辑host文件后添加以下行:

127.0.0.1 subdomain.domain.com

您运行自己的网站,个人网站启动,您可以使用此浏览器

http://localhost:[PortNumber]/(例如:http://localhost:17365/

将其更改为

http://subdomain.domain.com:[PortNumber]/(例如:http://subdomain.domain.com:17365/

用手在浏览器的网址上输入,然后就可以了。

答案 2 :(得分:2)

我只是转到Project Properties > Web,在Servers下,我选择Use Local IIS Web server并将Project Url设置为subdomain.domain.com

enter image description here

答案 3 :(得分:2)

有人注册了“lvh.me”,指向127.0.0.1

所以你可以使用: http://lvh.me http://something.lvh.me

答案 4 :(得分:0)

您还必须配置Web服务器。 好的,你改变了主机文件。您的系统(dns)知道与主机的去向(127.0.0.1)。 但是你的网络服务器对subdomain.domain.com一无所知,也没有任何关联。

答案 5 :(得分:0)

当您在Visual Studio中正常启动asp.net站点时,它使用Cassini Web服务器。 我不确定你是否可以为Cassini配置绑定。

我的建议是在IIS中配置一个网站或虚拟目录,绑定到subdomain.domain.com,看看如何做到这一点:Add a binding to a site

您的主机文件应包含以下内容:

127.0.0.1    subdomain.domain.com

然后,subdomain.domain.com的请求将被重定向到您的本地IIS Web服务器(在端口80上),因为绑定配置IIS知道在哪里查找您的网站。

在Visual Studio中的Web项目属性中,您可以配置为在Web tab中使用本地IIS Web服务器。

答案 6 :(得分:0)

我不确定Visual Studio开发服务器是否可以处理除localhost之外的任何内容。我认为唯一可以改变的是端口号。

你有几个选择。

1)如果需要,安装IIS Express(或完整的IIS)并将Visual Studio配置为指向您在其中设置的站点。您可以手动将绑定设置为subdomain.domain.com,并且非常灵活。看一下这个答案:Using Custom Domains With IIS Express

2)安装像rinetd这样的端口转发器(如果在hosts文件中有条目,我认为这应该有效)。您应该能够将subdomain.domain.com:<some port number>映射到localhost:17365。请注意,rinetd无法检测到您正在使用的域(只是底层IP地址127.0.0.1),因此最好为每个项目使用不同的端口。工作。

答案 7 :(得分:0)

转到applicationhost.config,可以在Windows托盘上找到。 Finding application.config of a current running project in IIS

现在找到

class AttendanceSerializer(serializers.ModelSerializer):

    face_image = serializers.SerializerMethodField()

    class Meta: 
        model = Attendance
        fields = ('id', 'face_image')

    def get_face_image(self, instance):
        return (instance.face_image.url if instance.face_image else '')

从bindingInformation删除本地主机。

最后,以管理员身份运行VisualStudio

答案 8 :(得分:0)

我正在使用VS 2017和Webforms(不要说)。

  1. 在解决方案(.sln)文件(在记事本中)中,将端口更改为8080。可以在多个属性中找到该端口,包括VWDPort,Debug.AspNetCompiler.VirtualPath,Debug.AspNetCompiler.TargetPath,Release.AspNetCompiler.VirtualPath,和Release.AspNetCompiler.TargetPath
  2. 在applicationhost.config文件中,我添加了:
<binding protocol="http" bindingInformation="*:8080:subdomain.domain" />

也可以在记事本中完成。确保此文件中的任何地方都没有重复或旧的条目进行绑定。在步骤1中更改端口后,您可能会获得带有旧绑定的自动生成的重复条目。另外,请确保编辑正确的applicationhost.config文件。此文件位于不同的位置,具体取决于您的VS版本。

  1. 在Powershell中,运行:“ netsh http add urlacl url = http://subdomain.domain:80/ user = everyone”
  2. 在您的主机文件(我的文件位于C:\ Windows \ System32 \ drivers \ etc)中,将“ 127.0.0.1 subdomain.domain”添加到您的主机列表中。您必须是管理员(右键单击记事本,以管理员身份运行)
  3. 以管理员身份运行VS。这样会将端口保持为80。如果未以管理员身份运行,则将获得一个随机端口号,您的.sln文件将使用该端口号进行自动编辑,并且将在applicationhost.config中获得重复的绑定。

以管理员身份运行很烦人,但这是我无法更改端口的唯一方法。另外,我尝试使用其他端口,例如随机分配的VS,但一直从IIS遇到503错误。

答案 9 :(得分:-1)

如果我添加它解析的代码,使用它可以获得IP地址列表 127.0.0.1请确认这是否是您要找的内容,否则我会删除答案

foreach (IPAddress address in Dns.GetHostAddresses("localhost"))
{
    Console.WriteLine(address.ToString());
}