无法启动 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
在标签<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 行。【参考方案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,访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
使用 Microsoft.Web.Administration 后无法启动 IIS Express Web 服务器
“无法启动 IIS Express Web 服务器”(UseIIS 与 UseIISExpress)