无法在IE或Edge中打开本地IIS站点

49

我在本地搭建了一个网站进行开发,并将其添加到了IIS中,同时在host文件中添加了URL(见下文)。但是,当我浏览该URL时,只会出现“嗯,我们无法访问此页面”的消息。

该网站在包括IE 11在内的其他所有浏览器中都能正常工作,所以我想知道是否有任何设置可以使本地网站在Edge上运行。

我已经搜索过,只找到了这篇相关帖子,但那里被接受的答案对我没有任何影响,因为该选项在我的Edge上已经被勾选。我也尝试过重新启动和刷新DNS,但两者都没有奏效。

我正在使用Windows 10和IIS版本10 Build 10240

Hosts文件

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost
127.0.0.1       localhost loopback     # tried with and without this as thought it may have something to do with the loopback option in edge
127.0.0.1       test.local
127.0.0.1       dev.local

我找到的其他链接——尽管没有解决方案,但第二个链接似乎建议我们只使用ie11:

为什么Microsoft Edge可以打开一些本地网站,而不能打开其他本地网站,其中域名路由到hosts文件中的127.0.0.1

https://social.technet.microsoft.com/Forums/en-US/246298d8-52c1-4440-8d7f-05329d50e653/edge-browser-hosts-file?forum=win10itprogeneral

更新

这可能与我的网站应用程序池是在我的工作帐户下运行而不是在IIS或网络服务下有关(我无法在后两者下运行,因为它们没有浏览我电脑上某些文件夹所需的正确权限)

更新2

对于任何试过以下所有步骤但仍然无法解决问题的人。 我发现这可能与我的Windows 10安装有关——我在该机器上的第一个安装是Windows 8。 然后,我将其升级到了8.1,并在10发布时升级到了10。

由于其他一些问题,我决定彻底重新安装了Windows 10,然后一切都完美解决了!

可能有点激进,但如果一切都失败了......

更新3

最近我得到了一台新的工作机器,又出现了这个问题,尝试了所有方法,但仍然无法加载它 - 结果发现工作代理导致了此问题,因此如果您尝试了以下所有步骤并且有代理,请检查代理是否正在阻止它


我认为IIS或应用程序池与此无关。我使用Apache 2时也遇到了同样的问题。https://dev59.com/Z1wY5IYBdhLWcg3wpJE-#32828629 - Evan de la Cruz
11个回答

95

为了安全起见,Windows 10已经将回环阻止。如果需要在IE Edge中使用回环,您需要以管理员权限运行以下命令:

CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"


3
是的!这是关于Windows 10的正确答案。我想它只在Edge浏览器中被阻止了,因为其他所有浏览器都可以使用。我还发现"about:flags"页面有一个复选框,所以你可以通过UI打开它。 - Brain2000
3
@Brain2000,即使about:flags已经设置了Allow localhost loopback选项,上述命令仍然可能需要运行,也就是说,在about:flags下的该选项并不等同于CheckNetIsolation命令。 - Mesagoma
1
这在我的情况下仍然没有起作用。我已经在about:flags中设置了选项,并从提升的命令提示符中添加了回环豁免。我使用的是Windows 10,并验证了Windows 10、Microsoft Edge和EdgeHTML的最低版本和构建版本。当我打开本地站点时,Edge会提示我进行身份验证,但尝试3次后我会收到401错误。这些步骤可能适用于Windows 10 Pro,但我想知道是否有人在Windows 10 Enterprise上成功过? - Matt
2020更新:FAQ页面丢失。 Wayback机器为“how-can-i-debug-localhost faq”提供了以下内容:如何调试本地主机?
Microsoft Edge默认允许本地主机访问,但将“localhost”视为Internet站点,因此禁用了集成身份验证等Intranet功能。 某些自定义主机映射可能需要额外的配置(有关详细信息,请单击此处),您可以运行以下命令: CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"
- Danny
这对我有用。但是,我必须运行答案中的命令。在about:flags中检查“允许本地主机环回”选项无效。它们似乎不会更改相同的设置。 - J.D. Mallen

17

这对我很管用;

  1. 打开“Internet选项”对话框

  2. 进入“安全”选项卡

  3. 选择“本地 Intranet”区域

  4. 点击“站点”按钮

  5. 勾选“自动检测 Intranet 网络”框

现在,Edge 可以找到我的本地网站(只有一个单词的名称!)


1
这对我有效,但你需要在第三步之后添加“单击站点按钮”的步骤。 - Facundo Colombier
5
Windows 10会自动屏蔽本地站点的Edge浏览器。但是现在这个功能已经失效了。 - Brain2000
当我执行这些步骤时,发现无法查看本地站点,而且已经检查过了。 - Andrew Koper

8
我解决了这个问题并在我的问题页面上发布了答案:为什么Microsoft Edge可以打开一些本地网站而无法打开其他的,其中域名被路由到hosts文件中的127.0.0.1?
(假设您的问题不仅仅是关于about:flags里的回环复选框)
解决方法是从受信任站点列表中删除域名,即可解决问题。只需要这样。我花了两周时间才找到答案。
  1. 打开Internet选项对话框(只需询问Cortana或使用Windows键+s)
  2. 切换到安全选项卡
  3. 单击“受信任站点”区域
  4. 点击“站点”按钮
  5. 从受信任站点列表中删除出现问题的域名
  6. 单击“应用”,然后关闭对话框
  7. 打开Edge(如果已经运行,则重新启动),尝试访问您的站点

嗨Evan,谢谢你的回答。不幸的是,我的可信站点列表里没有任何东西。 - Pete
1
哎呀,我也很兴奋啊。你没能成功让它工作,我感到有些失望。你试过这里的建议了吗:https://dev59.com/v10a5IYBdhLWcg3wboMv - Evan de la Cruz
是的,我尝试了所有这些建议,但都没有成功。我认为这是由于我的工作电脑设置 - 它们有各种代理和ISA规则,所以我认为它们正在干扰Edge。说实话,我觉得一个浏览器不能在不必要地更改设置和运行大量命令的情况下完成其主要功能是很愚蠢的。 - Pete
谢谢@Evan。我有一个单词域名用于本地测试网站(http://mysite)。我调整了各种设置(恐怕我现在记不清它们是什么了,但是有一个复选框说“允许单词域名”)。但是所有尝试都没有成功。最后,当我将其从受信任的站点列表中删除时,Edge才能访问我的网站。这非常违反直觉。 - Annabel
1
哇,这对我真的很有用。但是我也尝试了“勾选'自动检测内部网络'”的建议。所以可能是两者结合起来的效果。 - Branislav Kuliha
显示剩余4条评论

4

按照以下步骤进行:

步骤1:以管理员身份运行命令提示符

步骤2:输入命令“CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"”,然后按回车键。它会返回“OK”。

步骤3:重新启动 Microsoft Edge 或 Internet Explorer 以查看您的网页

希望这可以帮助您。

谢谢!


2

看了你所提供的超链接中的图片。也许提供更多详细信息会更有帮助。我如何导航到这个特定的对话框? - barrypicker

1
在我的Windows 10电脑上使用Edge浏览器,这是我的结果:
127.0.0.1       local             # Hmm, we can't reach this page
127.0.0.1       my.local          # Works :)
127.0.0.1       my.local.ca       # Works :)
127.0.0.1       test.local        # Works :)
127.0.0.1       dev.local         # Works :)

在您的hosts文件中, 使用完全限定域名(FQDN)而不是昵称。换句话说,包括一个点。然后它将在Edge中工作。

my.local.ca renders in Edge.

我的环境也是Windows 10,安装了IIS 10.0.10240.16384

IIS > Help > About IIS

这是我的Windows功能设置,包括Internet信息服务和万维网服务。

Word Wide Web Services Settings

我使用的应用程序池其身份设置为我登录计算机时使用的帐户。但是,当身份设置为ApplicationPoolIdentity时,它也可以正常工作。换句话说,下面图像中的EdgeHostsFile和DefaultAppPool都在我的计算机上工作。

Application Pools

正如您已经发布的那样,我的about:flags看起来像这样,允许本地主机回环。

about:flags

我的Edge版本是20.10240.16384.0

Edge Settings > Version


2
嗨,肖恩,感谢您的回答。不幸的是,我使用的名称包括一个点:test.local和dev.local - 在Edge中都无法工作。 - Pete
这两个在我的电脑上都可以运行。我可以进一步检查我的设置并发布更多细节,直到我们理解它为止。 - Shaun Luttin
1
我的设置肯定有问题,因为我找不到任何关于这个的信息 - 唯一的其他帖子也建议使用FQDNs - 尽管我上面编辑的第二个链接建议你只使用ie11。但我拒绝相信我不能用edge测试(虽然微软可能会这么做)! - Pete
1
嗯,除了我的应用程序池可能在我的工作帐户下运行(如上所述),我正在运行与您完全相同的环境。 - Pete
我正在使用FQDN并且遇到了这个问题。同时,我正在使用Apache,因此我不认为IIS或应用程序池与问题有任何关系。 - Evan de la Cruz
我没有设置任何域名,所以我的网站运行起来看起来像是 http://localhost:8321,但仍然显示“嗯,我们无法访问此页面。”即使网络跟踪显示 401,请帮忙解决。 - N.K

0

如果你尝试了其他用户的所有指示或设置,但仍然无法解决问题,请尝试以下方法:


打开Internet选项。(如果你使用Win10,在“搜索Windows/Cortana”中输入“in”)
1. 选择“安全”选项卡。
2. 点击“本地 Intranet”
3. 点击“站点”按钮。
4. 取消选中“包括所有本地(Intranet)站点...”
5. 取消选中“包括所有绕过...的站点”
- 点击“高级”按钮,删除在%windir%\System32\drivers\etc\hosts中定义的所有站点地址
6. & 7. 确定
8. 重新启动Microsoft Edge或Internet Explorer。

try this...


这个答案对我来说看起来非常有趣。我希望我仍然遇到这个问题,这样我就可以尝试一下。我想知道我上面的解决方案是否模仿了你的第五步解决方案,这可能解释了为什么它对我有效。@NaNonthasen,你知道这为什么解决了问题吗?还是只是试错法让你找到了这个方法?我认为这看起来是一个好的解决方案。 - Evan de la Cruz

0
除了将主机名添加到hosts文件中,还需进入Internet选项并将URL添加到本地Intranet下的受信任站点中。这对我很有效。

0

对于IE浏览器,可以在此页面上...

我找到了一个与其他答案类似但命令略有不同的答案:

CheckNetIsolation LoopbackExempt -a -n=windows_ie_ac_001

作为管理员,就像其他解决方案一样。

我不知道是否因为我特别搜索了Internet Explorer,所以找到了不同的答案,但无论如何它都起作用了。


0
当我尝试使用IISExpress在本地运行我的应用程序时,我遇到了这个错误。我已经更改了以下配置以解决此问题。
转到IISExpress配置文件,您可能会在Documents->IISExpress->config->applicationhost.config中找到它。
将NTLM提供程序值移动到Negotiate上方,如下所示。
<windowsAuthentication enabled="false">
  <providers>
    <add value="NTLM" />
    <add value="Negotiate" />
  </providers>
</windowsAuthentication>

它解决了我的问题。我能够在Microsoft Edge中浏览我的应用程序而没有任何错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接