ChatGPT解决这个技术问题 Extra ChatGPT

无法启动 IIS Express Web 服务器,无法注册 URL,访问被拒绝

一些网络项目给我带来了问题,而另一些则工作正常。我决定专注于其中一个有问题的。我在 Windows 7 上使用 Visual Studio 2013。我想我是以管理员身份运行它,窗口标题显示为 PROJECT NAME - Microsoft Visual Studio (Administrator)

当我尝试运行该项目时,我收到一个弹出窗口:

无法启动 IIS Express Web 服务器。未能为站点“SITE NAME”应用程序“/”注册 URL“http://localhost:62940/”。错误描述:访问被拒绝。 (0x80070005)。

这似乎不是 entirely uncommon,但我尝试了许多建议但没有运气:

已删除 %userprofile%\Documents\IISExpress\,尝试运行。 netsh http add urlacl url=http://localhost:62940/user=everyone,重启并尝试运行。 (实际上用户=Alla 自瑞典 Windows 以来)。 netsh http 删除 urlacl url=http://localhost:62940/,重新启动并从

我无能为力,我做错了什么?

如果我更改项目的端口(例如更改为 55555),它会启动......这不是一个理想的解决方案,因为这些项目是由几个人共同完成的。也许端口被其他东西阻塞了?如果是这样,有没有一种简单的方法可以通过什么来检查?

端口 62940 似乎是空闲的。运行 netstat 不会显示任何正在侦听它的应用程序。肯定有其他问题。

在几个月没有碰它之后,我今天尝试开始这个项目。它有效,但我不知道为什么。

运行 netstat -aon | findstr 以查看另一个应用程序是否也监视端口 62940。如果是,则无法监视该端口,而必须切换到另一个端口。当它们显然不是原因时,不要更改 applicationHost.config 或 netsh http
我按照建议运行了 netstat。似乎没有应用程序正在监视端口 62940。肯定有其他问题。
重新启动对我有用。
重新启动VS为我解决了这个问题。

F
Francisco

我通过更改项目的端口解决了错误。

我做了以下步骤:

1 - 右键单击项目。 2 - 转到属性。 3 - 转到服务器选项卡。 4 - 在选项卡部分,更改其他端口的项目 URL,例如 8080 或 3000。

祝你好运!


正如 Avrohom Yisroel 所说,只需终止 Microsoft.VisualStudio.Web.Host.exe*32 进程。
在 ASP.NET Core 1.0 RC1 上也为我工作,尽管它现在位于“调试”选项卡中,我必须关闭并再次打开 SSL 启用以生成新端口,然后将其复制到启动 URL 框。 stackoverflow.com/a/35706891/134761
为什么要赞成这个?这不是解决方案,是解决方法
就像@rotgers 说的,我不得不杀死一个进程。但我的是 ServiceHub.Host.CLR。我有5个或其他东西,并杀死了我能杀死的那些。然后iis解锁。
如果您使用 VS 2017 运行您的应用程序,请转到“Web”选项卡下并更改项目 URL 中的端口
D
Druid

是的,我同意,最佳答案确实是专业的解决方案。这是中间人的一个:

解决方案资源管理器

右键单击项目选择 Unload project Again 右键单击并选择 Edit ProjectName.csproj 删除这 3 行

<DevelopmentServerPort>0</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>http://localhost:62940/</IISUrl>

保存并重新加载项目,一切顺利。


我已经受够了卸载 - 无需从 .csproj 文件中删除任何行。
很好的解决方案。在此之前必须重新启动机器才能解决这个问题 - 所以感谢一个很好的解决方案。
我没有看到删除部分,我只是去那里更改了端口并且它起作用了
这为我解决了。没有其他工作,重新启动PC,netsh,更改端口。只需删除这 3 个标签,已修复,非常感谢!
这对我有用,谢谢。具有讽刺意味的是,我不得不在没有调试的情况下运行 (Ctrl + F5) 才能获得将我指向此页面以获得有效解决方案的错误消息。
S
Spongman

尝试(作为提升的管理员)

netsh http delete urlacl url=http://*:62940/

这实际上对我有用。我相信由于某种原因我不得不在 MSVS 2010 中保留端口,然后升级到 2013 (express) 并开始收到错误。我尝试删除,然后添加 (localhost -> '*') 不起作用。然后只是删除而不添加,它起作用了。
这对我也有用,但仅在以管理员身份运行时。否则它说它找不到文件。
尝试 netsh http show urlacl 查找冲突条目。
这有帮助,但在我的情况下还不够。我还必须使用 netsh http add urlacl url=http://localhost:62940/ user=Everyone 添加正确的网址
URL 保留删除失败,错误:2 系统找不到指定的文件。
A
Avrohom Yisroel

解决此问题的理想方法是使用 IIS Express 托盘图标来停止导致问题的网站。为此,请单击任务栏右侧的向上小箭头,然后右键单击 IIS Express 图标。这将弹出一个小窗口,显示 IIS Express 当前正在运行的网站...

https://i.stack.imgur.com/zgCZs.png

如果您单击“查看站点”下的其中一项,您可以选择停止该站点。或者,您可以单击窗口底部的退出项目来停止所有网站。

这应该使您能够在 Visual Studio 中进行调试。当您再次开始调试时,IIS Express 会自动重新启动网站,并且应该可以分配端口。

如果失败了,你必须用肮脏的方式来做。打开 Windows 任务管理器并杀死 Microsoft.VisualStudio.Web.Host.exe*32 进程,然后您可以正常运行项目。请注意,这将完全杀死 IIS Express,这意味着所有网站都将停止,因此如果要调试任何其他网站,则必须在 VS 中重新启动每个网站。首先尝试使用弹出图标方法,因为它更清洁、更安全。

不知道这是否能解决您的问题,但它对我有用。

更新感谢 JasonCoder(请参阅下面的评论)在 Win10 上添加,过程是 Microsoft.VsHub.Server.HttpHost.exe


Microsoft.VsHub.Server.HttpHost.exe 对我来说是在带有 VS2015 的 Windows 7 上的
当我尝试运行项目时,此过程再次运行。我该如何摆脱它?
@nmit026 该过程应该再次运行,这就是运行您的网站的过程。杀死它的目的是释放它似乎在端口上的锁。下次运行时,它会重新启动进程,并正确分配端口。
这是一个基本问题的基本解决方案,我很高兴有人把它放在那里。
C
Cayne

使用 Visual Studio 2015 时,解决方案可能与之前的答案有所不同。 VS2015 在与您的解决方案文件相同的文件夹下创建一个隐藏文件夹 .vs。下面是一个包含 applicationhost.config 的配置文件夹。删除此文件(或整个 .vs 文件夹)然后启动 VS2015 重新创建它可以修复此错误。


我不必重新启动VS2015,只需尝试重新启动应用程序即可。此外,我必须在项目属性页面的 web 选项卡中单击“创建虚拟目录”。
我的问题是另一个项目的 .vs/config/application...config 正在使用该端口。一旦我从该应用程序配置中删除了端口,我就可以开始了。
我有同样的问题。我通过在 applicationhost.config 中查找此端口来解决它。应该有一个标签“站点”,其中包含与项目设置中定义的相同端口。如果 Visual Studio 新建了一些错误的站点标签,请将其删除。
这对我有用。我刚刚删除了配置文件,重新启动了 VS 并重建了解决方案。这次 IIS 正确生成了配置。
为我工作。我损坏了我的配置文件
B
Buggieboy

最近也遇到这个错误。尝试了上述所有修复,但没有一个奏效。

要禁用它,请在命令提示符中键入 services.msc,然后右键单击并禁用 Internet 连接共享。我还编辑了它的属性以在启动时禁用。我的现在看起来像这样:services capture screenshot


在 Windows 10 周年版中,它被称为移动热点,可以通过在开始菜单中键入例如“热点”并选择更改移动热点设置来打开。
正如迈克尔所说,问题在于 ICS。但是您不需要禁用该服务,只需重新启动它,端口就会空闲。
该死!从没想过在win 10中共享连接会导致这个问题。谢啦!
@DanielGenezini 啊,是的!谢谢你做到了!已经为此苦苦挣扎了太久
@Michael,您是如何解决这个问题的?这是一个讨厌的错误。感谢分享。
P
Philip Trenwith

我在 Windows 10 上从 Visual Studio 2019 运行我的应用程序时遇到了同样的问题。经过一段时间的谷歌搜索并尝试了各种建议的解决方案但没有成功,我确定“访问被拒绝”错误是由于我的应用程序使用的端口号 (50403 ) 属于“排除的端口范围”。

您可以使用以下命令查看排除的端口范围:

netsh interface ipv4 show excludedportrange protocol=tcp

经过一段时间的谷歌搜索,我发现创建这些排除范围的两个最有可能的罪魁祸首是 Docker 和 Hyper-V。我的电脑上没有安装 Docker,但 Hyper-V 安装了。

我的解决方案

禁用 Hyper-V:控制面板-> 程序和功能-> 打开或关闭 Windows 功能。取消勾选 Hyper-V 重新启动计算机。将您正在使用的端口添加到端口排除范围:netsh int ipv4 add excludeportrange protocol=tcp startport=50403 numberofports=1 store=persistent Reenable Hyper-V 重新启动计算机

我将我正在使用的端口添加到排除列表中,以确保在重新启用 Hyper-V 后我不会再次遇到此问题。在第 4 步和第 5 步之后,当我查看排除的端口范围时,我可以看到 Hyper-V 保留了一个端口范围,从我的端口之后的下一个端口开始。

https://i.stack.imgur.com/KaPsC.png

我的应用程序现在完美运行!


完美解决方案!我安装了 docker,这导致了同样的问题。非常感谢
只是识别排除端口以便他们可以选择空闲端口的命令是 port_is_in_use 问题的简单解决方案。无需弄乱 Hyper-V 或任何其他正在使用/保留端口的服务(非常感谢您的帮助)
@HPWP7 是的,您是对的,简单的解决方案是选择另一个端口。就我而言,我必须使用端口 50403,因为该服务是从我无法控制的外部服务中消耗的。因此我需要保留端口 50403。(很高兴,很高兴我能提供帮助)
我不明白。您尝试使用的端口,您正在添加到排除列表中,这有什么帮助?这是否意味着您添加到排除列表的端口不再免费并且您不能使用它?我可能会遗漏一些东西。
@ANewGuyInTown 这是一个好问题,我没有详细研究它,因此我的回答可能不正确,但是,我相信用于将端口添加到排除列表的帐户拥有该端口,就我而言,它是用于运行应用程序的同一帐户,因此该端口可用于我的应用程序
A
Arjan

当我尝试从远程位置访问我的站点时,这发生在我身上:

起初,applicationhost.config (VS2015) 包含标准:

<binding protocol="http" bindingInformation="*:64376:localhost" />

为了从网络中的远程位置访问我的站点,我添加了(步骤 1):

<binding protocol="http" bindingInformation="*:64376:192.168.10.132" />

然后,我以管理员权限进入 CMD(步骤 2):

netsh http add urlacl url=http://*:64376/ user=Everyone

作为第 3 步,我将它添加到防火墙的规则。

netsh advfirewall firewall add rule name=”IISExpressWeb” dir=in protocol=tcp localport=64376 profile=private,domain remoteip=localsubnet action=allow

然后,在尝试再次运行解决方案时出现此错误。

解决方案:我似乎做的一切都是正确的,但是直到我为 现有的 localhost 规则运行 netsh 后它才起作用:

netsh http add urlacl url=http://localhost:64376/ user=Everyone

现在,它又可以工作了。


最后一个命令正是我需要让事情再次运行
谢谢你。这与我在尝试远程访问该站点后陷入的黑洞完全相同。
S
ScaryLooking

我只是有一个类似的问题。我不完全确定如何描述实际故障,但似乎保留中的主机名不正确。在提升的命令提示符下尝试此操作...

netsh http delete urlacl url=http://localhost:62940/

... 然后 ...

netsh http add urlacl url=http://*:62940/ user=everyone

并重新启动您的网站。它应该工作。


S
Sir CodesALot

我遇到了同样的错误消息,但它看起来像是从 IIS Express 生成的。 This article 帮我解决了

TL;博士

从管理命令提示符运行以下命令:

> netsh http add iplisten ipaddress=::

@amy netsh 配置 Windows 服务器角色/功能。本质上,它启用了 http 和 ip 监听本地主机。对于那些感兴趣的人,这里是 Microsoft 的文档:technet.microsoft.com/en-us/library/…
干杯@Micah,从那以后我不得不撤消这个,因为我所有本地配置的IIS站点都停止工作了..:/
修正:我只需添加 127.0.0.1 作为 ip 即可收听,现在一切正常。再次感谢您的解决方案;)
我不知道如何,但这帮助我在尝试修复了几个小时后修复了错误,非常感谢!
伙计,你是救世主……你像天使一样降临,拯救了我的一天。非常感谢...干杯
D
Dimitri C.

在尝试了许多建议的解决方案但没有成功后,我重新启动了我的电脑。之后问题就没有再出现了。


作为一个小提示 - 我从这里尝试了所有解决方案。我什至尝试关闭并重新启动PC,但它不起作用。然后一位同事建议我实际上使用 RESTART 而不是 SHUT DOWN 并且它有效。扑克脸:|在 Windows 8.1 上使用 Visual Studio 2015。这个错误经常发生在我在本地运行的各种 VS 解决方案上。
T
TAHA SULTAN TEMURI

这是我找到的唯一解决方案

net stop winnat

net start winnat

Thanks to Matt


谢谢!这为我解决了这个问题,但我必须每隔几天做一次。有谁知道根本原因是什么?
@TroyTurley,猜想后台可能有服务或正在更改配置的程序
S
Sven Sönnichsen

我最终清理了项目文件 (csproj) 和 applicationhost.config (iis express),其中包含有关 iis express 配置的所有条目。在那之后,它奏效了。


清理 applicationhost.config 文件对我有用。我刚刚删除了其中的所有 <site> 条目。 C:\Users\<USERNAME>\Documents\IISExpress\config\applicationhost.config
是的。这个在 VS 2013 中为我工作。我清除了 <sites> 下的网站条目并按了 Ctrl+F5。它说错误无法启动 IIS Express。因此,右键单击项目,转到属性,在 Web 下,在指定 http://localhost:3758/ 的项目 URL 文本框旁边,单击“创建虚拟目录”。现在Ctrl+F5 很好地启动了该网站。
C
Community

如果您在安装 Visual Studio 2015 后遇到此问题,并且您可以在系统事件日志中看到错误消息,例如:Unable to bind to the underlying transport for [::]:{your_port}. . The IP Listen-Only list may contain a reference ...,那么您可能缺少注册表项。

在管理命令提示符下运行它:netsh http add iplisten ipaddress=:: 以修复它。

我找到了详细描述的解决方案here


即使您更改项目端口,您也需要运行 netsh http add iplisten ipaddress=:: 感谢@Ignas
m
maxmantz

在此处列出的所有步骤对我来说都失败后,我通过以管理员身份运行 VS2015 使其工作。


如果它无法启动的 URL 是您添加到主机文件中的虚假 URL,这也是最可能的原因
R
Renato Chencinski

这在 Windows 10 和 VS 2013 上发生在我身上。显然 IIS Express 处理的最大端口号。 62546 以上的端口对我不起作用。


我不能确定最大值是否或是多少。但是,我遇到了这个错误。然后我删除了 %userprofile%\Documents\IISExpress 并编辑了我的 .csproj 文件,从端口 63584 移动到 61111。重新加载后,我的项目开始正常。
m
meJustAndrew

只需重新启动 Visual Studio 即可解决该错误。它与重新启动 Microsoft.VisualStudio.Web.Host.exe*32 进程的效果相同。


非重新启动,甚至计算机都帮助了我。对我来说不是正确的解决方案。
对我来说它有效,尝试更新 Visual Studio。您也可以尝试其他解决方案。
M
Marcus Höglund

遇到了同样的问题,IIS express 抱怨 http://localhost:50418/ 并且上述解决方案都不适合我..

去 projektFolder --> .vs --> config --> applicationhost.xml

在标签 <sites> 中,我发现我的网络应用注册了两个绑定。

<site name="myApp.Web" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\git\myApp\myApp.Web" />
    </application>
    <bindings>
        <binding protocol="https" bindingInformation="*:44332:localhost" />
        <binding protocol="http" bindingInformation="*:50418:localhost" />
    </bindings>
</site>

删除指向 *:50418:localhost 的绑定解决了这个问题。

使用 VS2017 和 IISExpress v10。


嘿,我们在这里谈论的是 IISExpress,而不是 IIS。我什至没有这3行。
M
Matt Stannett

我的问题原来是我在项目设置上启用了 SSL。我只是禁用了它,因为我不需要 SSL 来在本地运行项目。

在 Visual Studio 2015 中:

在解决方案资源管理器中选择项目。

在“属性”窗口中,将启用 SSL 设置为 False。

我能够运行该项目。

在我的情况下,我收到有关正在使用的端口 443 的错误,因为这是在项目的 SSL URL 上设置的端口。


我有相反的情况,我实际上需要在我的项目上启用 SSL。很高兴看到我不是唯一一个由于 SSL 而看到此错误的人。
我必须这样做才能将其设置为使用 ssl,然后再设置为不使用(我的应用程序不应该使用 ssl)
L
Loris

运行 netstat -abn 我注意到软件“Duet Display”在 ~51000 范围内保留了数千个端口。

关闭它解决了我的问题。


这种方式可能是最好的方式,因为它不仅仅是拼命尝试解决问题,而是帮助找到实际原因。在我的情况下,其他一些进程偶尔会偶然选择 IIS 想要使用的相同端口,并且这个答案帮助我终于找到了罪魁祸首。
A
Abdisamad Khalif

有时这个错误可能是在同一台机器上运行的另一个 Visual Studio 版本。


D
Damitha

转到项目“Properties”=>“Web”,然后在“Servers”部分将端口更改为其他未使用的端口并保存。您将被要求创建一个虚拟目录,然后单击“是”。现在运行项目,它现在可以工作了。


这与弗朗西斯科在 3 周前写的答案完全相同。
D
Daniel Hilgarth

在我的情况下,它一开始工作,一段时间后停止工作,IIS Express 报告该端口正在使用中。
netstat -ab 表明 Chrome 正在使用该端口。在我退出 Chrome 后,它又开始工作了。
但是,我不确定 Chrome 为什么会占用该端口。


这对我有用。我在不运行调试器的情况下使用浏览器并在 Firefox 和 Chrome 之间切换。在这个过程中一定有什么东西被挂断了。 (Win7/VS2015)
h
hsobhy

这发生在我在 Windows 7 和 VS 2013 上,在构建后在浏览器上查看项目时。我只需要关闭浏览器“Chrome”,然后使用某些实用程序(卡巴斯基)确保我的网络活动中没有使用该端口,然后再次尝试并正常工作。


l
live-love

在 Visual Studio 2015 中:

在您的项目中找到您的启动页面(例如:mypage.aspx),然后右键单击它。

单击设置为起始页。

右键单击项目。

单击属性。

单击左侧的 Web 选项卡。

在 Project URL 中,输入不同的端口,例如:http://localhost:1234/

在开始操作中,选择特定页面:mypage.aspx 或选择特定 URL:http://localhost:1234/mypage.aspx?myparam=xxx


O
Oğuzhan Sari

我写它是为了提供信息。

删除项目中的文件。

清洁>构建>项目启动后


k
k rey

我通过杀死 iexplorer 和 iexplorer*32 的所有实例解决了这个问题。即使应用程序窗口已关闭,看起来 Internet Explorer 仍在内存中保持端口打开。


w
workabyte

我在使用 JetBrains Rider 时遇到了这个问题,特别是对于端口 80 和 90 位,它正在与其他端口以及视觉工作室一起使用。

以管理员身份运行后,这解决了问题。


那是因为您正在尝试打开一个 < 1024 的端口。这些是服务端口。
是的,确实如此,但以管理员身份运行确实使您能够绑定到这些端口
是的,但您不应该将这些端口绑定为管理员。这很危险。
M
Morpheus

在 Visual Studio 2019 中,只需删除调试配置文件并创建新配置文件即可

转到项目属性 在调试选项卡中首先尝试更改端口 Web 服务器设置如果更改端口不起作用然后删除调试配置文件并创建新的 One-Warning 确保您知道以前的设置


D
Devator

对我有用的是禁用所有其他网络适配器,除了我当前使用的那个。事件查看器中的事件是:Unable to bind to the underlying transport for [::]:50064. The IP Listen-Only list may contain a reference to an interface which may not exist on this machine. The data field contains the error number.

因为我有 VMware Workstation、Docker(以及 Hyper V)一些 VPN 客户端,所以我有很多网络接口。