Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 本地主机上的测试子域_C#_Asp.net - Fatal编程技术网

C# 本地主机上的测试子域

C# 本地主机上的测试子域,c#,asp.net,C#,Asp.net,我想在asp.net站点中测试一些子域功能。我阅读本文只是为了编辑hosts文件并添加127.0.0.1 subdomain.domain.com,这应该可以工作 但我的似乎不是。我刷新了dns,重新启动,尝试了新的浏览器,但仍然收到错误500 当我从Visual Studio正常运行asp.net站点时,它会转到http://localhost:17365/。我如何获取此服务器的IP地址 我想我不了解全部情况,遗漏了一些片段 我运行了netstat-n,看到该站点正在[::1]:17365上运

我想在asp.net站点中测试一些子域功能。我阅读本文只是为了编辑hosts文件并添加127.0.0.1 subdomain.domain.com,这应该可以工作

但我的似乎不是。我刷新了dns,重新启动,尝试了新的浏览器,但仍然收到错误500

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

我想我不了解全部情况,遗漏了一些片段


我运行了netstat-n,看到该站点正在[::1]:17365上运行,这可能就是为什么它不能在ipv4下工作?

在visual studio中运行该站点时,首先将
网站属性>使用动态端口更改为
False
,然后将
端口号设置为
80
,然后运行它


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

我只需进入
项目属性>网站
,然后在
服务器
下,选择
使用本地IIS网站服务器
,并将
项目Url
设置为
subdomain.domain.com


您还必须配置web服务器。 好的,您更改了主机文件。您的系统(dns)知道主机的去向(127.0.0.1)。
但是您的web服务器仍然对subdomain.domain.com一无所知,也不与之关联。

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

我的建议是在IIS中配置一个网站或虚拟目录,并将其绑定到subdomain.domain.com,请查看以下方法:

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

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


在Visual Studio中web项目的属性中,您可以在
web选项卡
中配置使用本地IIS web服务器

我不确定VisualStudio开发服务器是否能够处理与localhost以外的任何对象的绑定。我想你唯一能改变的就是端口号

你有两个选择

1) 安装IIS Express(如果需要,也可以在IIS上安装full),并将Visual Studio配置为指向您在其中设置的站点。您可以手动设置绑定到
subdomain.domain.com
,这非常灵活。看看这个答案:


2) 安装一个端口转发器,如(我认为,如果您的主机文件中有该条目,则应该可以这样做)。您应该能够将
subdomain.domain.com:
映射到
localhost:17365
。请注意,rinetd不会检测到您正在使用的域(只是底层IP地址,即127.0.0.1),因此最好为您正在处理的每个项目使用一个不同的端口。

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

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

解决方案非常简单。 编辑
主机
文件后,将行添加为:

127.0.0.1 subdomain.domain.com

你运行你的网站,个人网站启动,然后你就可以进入你的浏览器了

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

把它改成

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

用手在浏览器的url上键入它,它就会工作。

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

因此,您可以使用:

转到applicationhost.config,您可以在windows任务栏中找到。

现在找到

<webLimits>
......
<sites>
.....
<site name="[YourProjectName]" id="[YourProjectID]">
                <application path="/" applicationPool="Clr4IntegratedAppPool">
                    <virtualDirectory path="/" physicalPath="[Your Project Path]" />
                </application>
                <bindings>
                    <binding protocol="http" bindingInformation="*:50569:[Remove localhost from here]" />
                </bindings>
            </site>
.....
</sites>
......
<webLimits />

......
.....
.....
......
从绑定信息中删除localhost


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

我使用的是VS2017和Webforms(不用说)

  • 在解决方案(.sln)文件(在记事本中)中,我将端口更改为8080。这在几个属性中都可以找到,包括VWDPort、Debug.AspNetCompiler.VirtualPath、Debug.AspNetCompiler.TargetPath、Release.AspNetCompiler.VirtualPath和Release.AspNetCompiler.TargetPath
  • 在applicationhost.config文件中,我添加了:
  • 
    
    也可以在记事本中完成。确保此文件中没有重复或旧的绑定条目。在步骤1中更改端口后,您可能会得到一个自动生成的具有旧绑定的重复条目。此外,请确保您正在编辑正确的applicationhost.config文件。此文件位于不同的位置,具体取决于您的VS版本

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

  • 以管理员身份运行是令人恼火的,但这是使端口不发生更改的唯一方法。此外,我还尝试使用其他端口,例如随机分配的VS端口,但不断遇到来自IIS的503个错误。

    您是否查看过
    Dns.GetHostAddresses
    您可以尝试类似的方法,但就个人而言,您需要一个真实的地址请尝试
    www.google.com<binding protocol="http" bindingInformation="*:8080:subdomain.domain" />