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

Lin*_*nus 145 asp.net port visual-studio iis-express

一些Web项目导致我出现问题而其他项目工作正常.我决定专注于其中一个有问题的问题.我在Windows 7上使用Visual Studio 2013.我认为我是以管理员身份运行它,窗口标题说PROJECT NAME - Microsoft Visual Studio (Administrator).

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

Unable to launch the IIS Express Web server.

Failed to register URL "http://localhost:62940/" for site "SITE NAME"
application "/". Error description: Access is denied. (0x80070005).
Run Code Online (Sandbox Code Playgroud)

这似乎并不完全 不常见,但我已经尝试了许多没有运气的建议:

  1. 删除%userprofile%\Documents\IISExpress\,试图运行.

  2. netsh http add urlacl url=http://localhost:62940/ user=everyone,重新启动并尝试运行.(实际上user=Alla自瑞典Windows以来).

  3. netsh http delete urlacl url=http://localhost:62940/,重新启动并更改<binding protocol="http" bindingInformation="*:62940:localhost /><binding protocol="http" bindingInformation="*:62940:/>in %userprofile%\Documents\IISExpress\config\applicationhost.config并尝试运行.(它确实改变了错误信息... URL "http://*:62940/" ....

  4. 重新安装IIS 8.0 Express

  5. 重新安装Visual Studio 2013

我的智慧结束了,我做错了什么?

编辑1:如果我更改项目的端口(例如,更改为55555),它将启动...这不是一个理想的解决方案,因为这些项目是由几个人处理的.也许该端口被其他东西阻止了?如果是这样,有什么简单的方法可以检查什么?

编辑2:端口62940似乎是免费的.运行netstat不会显示任何应用程序正在侦听它.别的一定是错的.

编辑3:我今天尝试启动项目后几个月没有碰到它.它工作但我不知道为什么.

TAH*_*URI 87

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

net stop winnat

net start winnat
Run Code Online (Sandbox Code Playgroud)

感谢马特

  • 在 Windows 11 中为我工作。2023 年 6 月。 (3认同)

Fra*_*sco 81

我通过更改项目的端口来解决错误.

我做了以下步骤:

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

祝好运!

  • 为什么要投票呢?这不是解决方案,是一种解决方法 (12认同)
  • 我不希望这是答案,但它有效. (10认同)
  • 就像Avrohom Yisroel所说的那样杀死`Microsoft.VisualStudio.Web.Host.exe*32`进程. (7认同)

Avr*_*oel 58

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

IIS Express弹出

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

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

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

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

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

  • 这很有效.在VS 10的Win 10上,该过程称为Microsoft.VsHub.Server.HttpHost.exe (8认同)
  • Microsoft.VsHub.Server.HttpHost.exe就像在Windows 7上使用VS2015一样 (3认同)
  • @nmit026 该进程应该再次运行,这就是运行您的网站的原因。杀死它的目的是释放它似乎在端口上的锁。下次运行时,它会重新启动进程,并正确分配端口。 (2认同)

Spo*_*man 42

尝试(作为提升管理员)

netsh http delete urlacl url=http://*:62940/
Run Code Online (Sandbox Code Playgroud)

  • URL保留删除失败,错误:2系统找不到指定的文件。 (4认同)
  • 这实际上对我有用.我相信由于某种原因我必须在MSVS 2010中保留端口,然后升级到2013(快递)并开始收到错误.我尝试删除然后添加(localhost - >'*')这不起作用.然后只是删除没有添加,它工作. (3认同)
  • 这也适用于我,但仅限于以管理员身份运行时.否则它声明无法找到该文件. (3认同)
  • 这有帮助,但在我看来还不够.我还必须使用`netsh http add urlacl url = http:// localhost:62940/user = Everyone`添加正确的url (3认同)
  • 尝试`netsh http show urlacl`来查找冲突的条目. (2认同)

Cay*_*yne 41

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

  • 这解决了我.我在这篇文章中尝试了其他一切,但都失败了.谢谢凯恩!+1 (3认同)

Phi*_*ith 36

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

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

netsh interface ipv4 show excludedportrange protocol=tcp
Run Code Online (Sandbox Code Playgroud)

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

我的解决方案

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

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

排除的端口范围

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

  • 只需使用命令来识别排除端口,以便他们可以选择一个空闲端口,这就是解决 port_is_in_use 问题的简单方法。无需搞乱 Hyper-V 或任何其他正在使用/保留端口的服务(非常感谢您的帮助) (3认同)
  • 完美解决方案!我安装了 docker,这导致了同样的问题。非常感谢 (2认同)

Mic*_*el. 33

最近也出现了这个错误.尝试了所有上述修复,但都没有奏效.

要禁用它,请键入services.msc命令提示符,然后右键单击并禁用Internet连接共享.我编辑了它的属性以及在启动时禁用.我现在看起来像这样:服务捕获截图.

  • 正如迈克尔所说,问题在于 ICS。但是您不需要禁用该服务,只需重新启动它,端口就会空闲。 (4认同)
  • 在Windows 10周年纪念版中,它被称为Mobile Hotspot,可以通过在"开始"菜单中键入例如"hotspot"并选择"更改移动热点设置"来打开. (2认同)
  • 该死!从来没有想过在 win 10 中共享连接会导致这个问题。谢啦! (2认同)
  • @DanielGenezini 啊是的!谢谢,做到了!已经为此苦苦挣扎太久了 (2认同)

Sca*_*ing 24

我刚才有类似的问题.我不完全确定如何描述实际的错误,但似乎预订中的主机名不正确.在提升的命令提示符中尝试此操作...

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

... 然后 ...

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

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


Arj*_*jan 24

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

首先,applicationhost.config(VS2015)包含标准:

<binding protocol="http" bindingInformation="*:64376:localhost" />
Run Code Online (Sandbox Code Playgroud)

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

<binding protocol="http" bindingInformation="*:64376:192.168.10.132" />
Run Code Online (Sandbox Code Playgroud)

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

netsh http add urlacl url=http://*:64376/ user=Everyone
Run Code Online (Sandbox Code Playgroud)

在第3步中,我向防火墙添加了一条规则.

netsh advfirewall firewall add rule name=”IISExpressWeb” dir=in protocol=tcp localport=64376 profile=private,domain remoteip=localsubnet action=allow
Run Code Online (Sandbox Code Playgroud)

然后,我在尝试再次运行解决方案时遇到此错误.

解决方案:我似乎已经做好了一切,但是在我netsh现有的localhost规则运行之前它没有用:

netsh http add urlacl url=http://localhost:64376/ user=Everyone
Run Code Online (Sandbox Code Playgroud)

现在,它再次起作用.

  • 我希望我能100次回答这个问题 (3认同)

小智 22

是的,我同意,最重要的答案实际上是专业的解决方案,

这是一种中间体

解决方案资源管理器

右键单击项目,选择“ 卸载项目”

再次右键单击并选择Edit ProjectName.csproj

删除这三行

<DevelopmentServerPort>0</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>http://localhost:62940/</IISUrl>
Run Code Online (Sandbox Code Playgroud)

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

  • 没有其他选择对我有用,这个选择确实可以。 (5认同)

Mic*_*cah 17

我遇到了同样的错误消息,但看起来它是从IIS Express生成的. 这篇文章帮我解决了

TL; DR

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

> netsh http add iplisten ipaddress=::
Run Code Online (Sandbox Code Playgroud)

  • 不是100%这个人做的,但它像手套一样工作!:)干杯@Micah (2认同)
  • 修订:我只需要添加127.0.0.1作为IP即可收听,所有工作现在即可进行。再次感谢您的解决方案;) (2认同)

Dim*_* C. 16

在尝试了一些建议的解决方案后,我没有成功,我只是重启了我的电脑.之后问题不再发生了.


Sve*_*sen 13

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

  • 清除`applicationhost.config`文件对我有用.我刚刚删除了所有的`<site>`条目.`C:\用户\ <USERNAME> \文件\ IISExpress \配置\ applicationhost.config` (8认同)

Ign*_*nia 11

如果您在安装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=::修复它.

我在这里找到了详细描述的解决方案


max*_*ntz 9

在这里列出的所有步骤都失败后,我通过以管理员身份运行VS2015来实现它.


Mar*_*und 6

遇到了同样的问题,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>
Run Code Online (Sandbox Code Playgroud)

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

使用 VS2017 和 IISExpress v10。


小智 5

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