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

Posted

技术标签:

【中文标题】无法启动 IIS Express Web 服务器,无法注册 URL,访问被拒绝【英文标题】:Unable to launch the IIS Express Web server, Failed to register URL, Access is denied 【发布时间】:2014-06-23 12:24:36 【问题描述】:

一些 Web 项目给我带来了问题,而另一些则工作正常。我决定专注于其中一个有问题的。 我在 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,重新启动并尝试运行。 (实际上是 user=Alla,自瑞典 Windows 以来)。

    netsh http delete urlacl url=http://localhost:62940/,重新启动并在%userprofile%\Documents\IISExpress\config\applicationhost.config 中从<binding protocol="http" bindingInformation="*:62940:localhost /> 更改为<binding protocol="http" bindingInformation="*:62940:/> 并尝试运行。 (它确实将错误消息更改为 ... URL "http://*:62940/" ...

    重新安装 IIS 8.0 Express

    重新安装 Visual Studio 2013

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

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

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

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

【问题讨论】:

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

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

解决方案资源管理器

    右键单击项目选择卸载项目 再次右键单击并选择Edit ProjectName.csproj 删除这 3 行
<DevelopmentServerPort>0</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>http://localhost:62940/</IISUrl>
    保存并重新加载项目,一切顺利。

【讨论】:

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

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

转到 projektFolder --> .vs --> config --> applicationhost.xml

在标签&lt;sites&gt; 中,我发现我的网络应用注册了两个绑定。

<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 行。【参考方案3】:

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

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

【讨论】:

【参考方案4】:

在 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 excludedportrange protocol=tcp startport=50403 numberofports=1 store=persistent 重新启用 Hyper-V 重启电脑

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

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

【讨论】:

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

对我有用的是禁用所有其他网络适配器,除了我当前使用的那个。事件查看器中的事件是: 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)和一些 *** 客户端,所以我有很多网络接口。

【讨论】:

【参考方案6】:

我还阅读了答案和 cmets 并尝试了该线程的一些解决方案。

然后再用 Google 搜索一下,这对我有用

https://www.c-sharpcorner.com/blogs/iis-express-failed-to-register-url-access-is-denied

没有评论任何人的答案,因为我没有阅读这里写的内容,所以它需要一个新的答案帖子。 这里有关于 netsh wlan 东西的答案,但我没有看到这个解决方案。 如果有人写了完全相同的解决方案请告诉我,以便我可以在那里发表评论并删除它。

【讨论】:

【参考方案7】:

VS2019 偶尔也会遇到这种情况。

一般的问题是端口已经被占用或不可用,并且有很多可能的原因,导致这里有很多不同的答案。

我想添加对我有帮助的内容:问题只是暂时的,我再次尝试没有更改任何内容,它就成功了。所以我只是建议先测试一下,因为这是最简单的事情。

【讨论】:

【参考方案8】:

这是针对 Visual Studio 2019 的,在尝试了很多失败的建议(包括更改端口号等)后,我通过删除在项目的根文件夹中生成的名为“debug”的文件解决了我的问题”。删除此文件后,一切都开始工作了。

【讨论】:

【参考方案9】:

伙计们,我阅读了 2 次页面浏览量之间的所有 cmets,但仍然没有帮助我的情况。虽然,有些人在一定程度上有所帮助。最后,这有助于解决我的情况,我认为其他人也可能是这种情况。

我的笔记本电脑中也有一个 docker Desktop,我在 Docker 中运行了一些。然后,我打开了我的 VS 并想调试我的特定应用程序。尽管使用 VS 2019 并且 web api 配置为使用 Https 端口,但 http 端口导致了这个问题。在尝试了答案中提到的所有步骤后,我凭直觉行事

    停止并终止我的 docker 桌面应用程序。 然后停止正在运行的 IIS Express。 只需按 F5(调试),瞧!

所以,这个问题有多种原因,这取决于个人的机器状态和他们拥有的应用程序。

我尝试删除 .vs 文件夹,删除用户配置文件的文档文件夹中的 IISExpress 文件夹,但是如果我的 VS 不使用它们,我猜我的 Docker 应用程序必须接管剩余的 IP 地址。

因此,请检查任何其他可能占用/消耗某些 IP 跨度或范围的应用程序并尝试杀死它们。就我而言,我在运行我的 VS 后再次启动了 Docker,到目前为止一切都按预期进行!

【讨论】:

【参考方案10】:

对我来说,解决它的方法是断开 ***(我们使用 FortiClient)

【讨论】:

【参考方案11】:

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

net stop winnat

net start winnat

Thanks to Matt

【讨论】:

【参考方案12】:

首先,以管理员身份运行 VS 解决了这个问题。但最奇怪的部分是我已经检查了快捷方式上的“以管理员身份运行”设置,这似乎不起作用。

看起来我们需要从快捷方式上下文菜单中显式单击“以管理员身份运行”选项

【讨论】:

以上是关于无法启动 IIS Express Web 服务器,无法注册 URL,访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

“无法启动IIS Express Web服务器”错误

使用 Microsoft.Web.Administration 后无法启动 IIS Express Web 服务器

“无法启动 IIS Express Web 服务器”(UseIIS 与 UseIISExpress)

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

无法启动 IIS Express Web 服务器

VS2015 无法启动IIS Express Web服务器(已解决)