“无法启动IIS Express Web服务器。” 在Visual Studio中


108

我试图通过Visual Studio运行Web服务。我遇到了类似的问题:

---------------------------
Microsoft Visual Studio
---------------------------
Unable to launch the IIS Express Web server.

Failed to register URL "http://localhost:63591/" for site "xxxxxx" application
"/". Error description: The process cannot access the file because it is being
used by another process. (0x80070020)

---------------------------
OK   
---------------------------

我看到了任务管理器,发现系统使用了PID 4,其描述为,NT Kernel & System. 因此我尝试停止http service。所有依赖项服务已停止。但是我在停止http服务方面遇到了问题

The service is starting or stopping.  Please try again later.

因此,我尝试手动停止并启动该服务。但是结束进程被禁用。如果有人可以帮助解决此问题将很有帮助


1
看到更新的Windows 10后的问题:developercommunity.visualstudio.com/content/problem/580466/...

Answers:


131

https://www.davidsalter.co.uk/unable-to-launch-the-iis-express-web-server-error-0x80070020/

错误代码0x80070020表示ERROR_SHARING_VIOLATION,对于IIS Express(或IIS)而言,它表示正在尝试侦听的端口正在由另一个进程使用。

使用netstat命令找出哪个应用程序正在使用该端口。

netstat -ao | findstr <port_number_to_search_for>

a参数告诉netstat显示所有连接和侦听端口。

o参数告诉netstat显示与连接关联的进程ID。

运行上面的netstat命令将产生如下输出:

C:\>netstat -ao | findstr 4026
TCP    12.0.0.1:4026        cs-pc:4026         LISTENING       9544

显示的最后一个数字(此处为9544)是进程ID。


11
好答案!您不仅要描述解决方案,而且还包括参数的含义。我希望所有答案都是这样!
Christian Payne

8
这对我有所帮助,原来令人讨厌的PID是Chrome.exe。我重新启动了Chrome,问题消失了。
astrosteve

1
好答案。使用此工具,我发现skype在端口80和443上都在监听。我杀死了skype,然后能够正常启动iisexpress,现在显示了对端口80和443的额外绑定
Alastair

3
在提升的cmd窗口中运行,TASKKILL /PID 2756 /F替换2756为您的进程ID
stackoverfloweth

13
使用-n交换机也可以使其速度大大提高-它使用“数字”输出,这意味着它不会浪费时间查询DNS以将IP地址解析为主机名。
Tullo_x86

52

尝试从Windows 10上的Visual Studio 2019运行项目时遇到类似的问题。该应用程序无法启动,因为该端口显然已被另一个进程使用。但是,该netstat命令显示该端口未被任何应用程序使用。

经过2天的谷歌搜索,我发现了一个对我有用的解决方案。我尝试使用的端口在排除的端口范围内,您可以通过运行以下命令来查看该端口范围:

netsh interface ipv4 show excludedportrange protocol=tcp

在我的情况下,保留这些端口的罪魁祸首是适用于Windows的Docker和Hyper-V

解决方案

我卸载了Docker(不需要它)并禁用了Hyper-V。禁用Hyper-V:转到:控制面板->程序和功能->打开或关闭Windows功能。取消选中Hyper-V,然后重新启动计算机。

重新启动后,该命令 netsh interface ipv4 show excludedportrange protocol=tcp显示没有保留端口。

然后,通过从提升的命令行运行以下命令,将我的应用程序的端口添加到排除的端口范围:

netsh int ipv4 add excludedportrange protocol=tcp startport=50403 numberofports=1 store=persistent

然后,我重新启用了Hyper-V(可以根据需要重新安装Docker),然后再次重新启动计算机。

Hyper-V现在保留了其端口,而不会干扰我的应用程序使用的端口: 保留的端口范围


这对我有用,除了我需要Docker,所以我只是在启动时禁用了它,而不是卸载了它。
cderrick

3
我最终将端口更改为排除范围之外的端口。但是,这节省了我很多时间。谢谢。
科里

2
像@Cory一样,我将vs中的端口更改为超出范围的内容,这很烦人,因为现在每次执行此操作时都必须更改引用应用程序,但比完全重新启动要好。
Nick Rubino

我一直在寻找这样的。我想知道是否有办法确定到底哪个应用程序偷了我的端口?谢谢。
西蒙·穆里尔

禁用Hyper-V并重新启动已为我修复了该问题
Kyle Burkett,

30

我有同样的问题。我刚刚重新启动了Visual Studio,它起作用了。


1
我的计算机已从更新中重新启动,并且netstat使用该端口未显示任何进程。这只是有效的解决方案。谢谢!
goodies4uall '16

1
不得不重新启动我的机器也
马哈茂德Hboubati

令人惊讶的是,重新启动Visual Studio(2017)对我来说也很好。谢谢!
Thomas Gassmann

就我而言,我的Windows 10机器蓝屏了,我不得不重启两次。其他网站项目工作正常(不同的本地端口),这里的其他答案均无效。更改项目的端口也无法修复。IIS Express本身中必须有一些其他配置。
Granger

每当我在VS 2019中运行项目并使用F5进行调试时,似乎都会发生这种情况,然后稍后尝试在不使用Ctrl + F5进行调试的情况下运行它而不进行调试。重新启动可以解决此问题,尽管我希望实际上可以防止它首先发生。
pwhe23

28

我遇到过同样的问题。正如@Kautsky Lozano在上面提到的那样,另一个应用程序正在使用该端口。

因此,(对于Windows操作系统)只是:

  • 打开资源监视器(任务管理器->性能->打开资源监视器)
  • 单击网络选项卡。
  • 在“ TCP连接”处找到使用IIS Express使用的本地端口的应用程序,然后将其关闭。(在我的情况下是Firefox)

完美地工作!
Al Belmondo

12

在将解决方案从Visual Studio 2012升级到2015后,我遇到了同样的问题。我来这里是netstat为了发现没有其他应用程序在使用相同的端口。事实证明,我在解决方案中的applicationhost.configat Users/<username>/Documents/IISExpress/configapplicationhost.configthe .vs文件夹中映射了具有相同端口的相同站点。我应该注意,升级后问题也没有立即开始。它只是开始持续失败的一个早晨。重启几次似乎也无法解决问题。

从存储在我的文档中的站点中删除冲突的站点,然后重新启动Visual Studio解决了该问题。


这帮助我:applicationhost.config是在.vs\config您的解决方案文件夹下的文件夹。
Erik Oppedijk

6

如果netstat没有显示任何已在使用该端口的内容

netstat -ano | findstr <your port number>

该端口可能已被排除,请尝试使用此命令查看范围是否被其他东西阻塞:

netsh interface ipv4 show excludedportrange protocol=tcp

您可以尝试从多个端口的开始端口取消阻止范围(需要管理员提供命令提示符):

netsh int ip delete excludedportrange protocol=tcp numberofports=<number of ports> startport=<start port>

对我来说,我无法解除阻止,我只收到“访问被拒绝”,因此最终不得不为我的站点选择另一个端口。



3

即使netstat没有显示任何冲突,我也遇到了这个问题。

以下为我修复了它:

  1. 关闭Visual Studio
  2. 打开文件资源管理器
  3. 导航到有问题的项目的文件夹
  4. 删除objbin文件夹
  5. 删除* .user文件(这可能是可选的)
  6. 重新启动Visual Studio,然后重试

3

更新Windows 10和/或Visual Studio 16+之后,由于内部错误,IISExpress无法注册任何开发网站,因为它不再接受localhost连接,可能会发生这种情况。

要解决此问题,您只需再次注册绑定。为此,请从管理外壳运行以下命令:

netsh http add iplisten ipaddress=:: 

2

升级MVC项目时遇到了这个问题。我在现有的.csproj文件上复制了较新的MVC .csproj,然后又恢复为可以正常工作的项目。我没有考虑的是旧.csproj中的现有端口号。新项目具有新的端口号,但共享了项目/部件名称。这足以使IIS Express失去理智并抛出此异常。

只需从git中挖掘出旧的端口号并更改IIS Express URL使其包含在“项目设置”中就可以解决它。


2

无需进入命令控制台,最简单的第一步就是关闭所有应用程序(包括VS),然后自行启动VS,然后重试。可能是其他应用程序(例如您的浏览器)引起了冲突。以我为例,Chrome导致了这种情况,并且在关闭所有内容并重新启动VS时解决了该问题。我再次打开Chrome,一切都很好。

上面的netstat内容很有用,但是对我来说,只有您不能按照我的建议去做。


2

总结所有答案。有2个解决方案。两者都为我工作。- 解决方案1:杀死使用相同端口的应用程序。- 解决方案2 IIS Express配置为为项目使用其他端口。

解决方案1 (假设错误消息中的端口为443)在命令行中运行:

netstat -ao | findstr 443

它返回: TCP 0.0.0.0:443 pe01:0 LISTENING 2904 最后一个数字(感谢@ chris-schiffhauer)是要杀死的PID。转到任务管理器->进程-> [显示所有用户的进程],使用PID = 2904终止进程。就我而言,它是VmWare主机。

解决方案#2 (假设消息是:无法为站点“ MyProject.Website0” ... 注册URL“ http:// localhost:433 /)。在notepad ++中打开以下文件:C:\Users\MY_USER_NAME\Documents\IISExpress\config\applicationhost.config在其中找到包含以下内容的行:

<site name="MyProject.Website0" id="...
...
            <bindings>
                <binding protocol="http" bindingInformation="*:80:localhost" />
                <binding protocol="https" bindingInformation="*:443:localhost" />
            </bindings>

更改433为其他名称,例如4330或删除冲突<binding.../>标签。


2

就我而言,执行以下操作可以解决问题:

  • 从.vs \\ config \ applicationhost.config中删除站点
  • 从Documents \ IISExpress \ config \ applicationhost.config中删除站点
  • 从.csproj删除IISUrl

当我重新启动Visual Studio时,它为项目分配了一个全新的端口号并完美运行


2

端口号不匹配

就我而言,问题出在我的解决方案文件夹下.vs的配置文件中的绑定标签中,端口号不匹配。绑定如下

<bindings>
     <binding protocol="http" bindingInformation=":16433:localhost" />
</bindings>

在我的设置中,我将网址设置为 http://localhost:1943/

因此,我要做的是删除内部绑定并运行我的Web应用程序,然后生成具有不同编号的新绑定,然后将新生成的端口复制到我的设置中,然后错误消失了。


这次(我曾经遇到过这个问题,它是这里各种答案中提出的众多原因之一),这就是原因。
物种未知,


1

我可以通过将的所有内容从删除<site></site>标签来解决此问题

Users/<username>/Documents/IISExpress/config/applicatiohost.config 文件

<sites>
  <site>
     .
     .   ===> remove this content including the <site> and </site> tags.
     .
  </site>
</sites>

1

刚刚花了半天时间试图解决这个问题,我觉得我应该添加最终对我有用的解决方案。

TL; DR如果netstat指示未使用有问题的设备,请在完全不同的范围内尝试其他一些

我之前遇到过这个问题,但通常发现重新启动Visual Studio,更改端口(增加1)或重新启动就可以了。但是,这次没有任何帮助,netstat也没有发现有冲突的过程。我什至重新安装了IIS和Visual Studio,并删除了我怀疑可能会干扰的其他几个程序。似乎IIS试图启动同一站点的多个实例。

最终,我尝试netstat不带跑步findstr。我直观地扫描了活动端口的列表,发现虽然没有列出我尝试过的端口,但仍有一些进程使用相似范围的端口。因此,我改为寻找一个免费的范围,选择了一个端口号,现在似乎可以正常工作了。

我很想听听是否有人可以解释为什么这可能有效?


这个解决方案也为我解决了。
Rastographics 19-10-28

1

我今天在Visual Studio 2019中遇到了这个问题,花了3个小时才终于弄清楚这个问题。Visual Studio使用2个文件来跟踪SSL端口号,因此您必须修复这两个问题,并且必须在Visual Studio关闭时修复这两个问题。这两个文件是解决方案的.vs \ ??? \ config文件夹中的applicationhost.config文件。以及您的Web项目的.csproj.user文件夹。编辑两个文件并删除有问题的配置。甚至只是删除两个文件。然后在Visual Studio中重新打开您的应用程序。祝好运!


如果您的解决方案包含一个老式的老式网站(而非Web应用程序),则端口号也位于解决方案文件.sln
nuander

1
  1. 关闭视觉工作室
  2. 删除“ .vs”文件夹
  3. 尝试更改端口“ localhost:8080”

它为我工作。


1

我按照@Zoti的说明进行操作,并使用资源监视器查找有问题的端口。

事实证明,已经为Outlook的通信通道随机分配了端口。这个故事的寓意是,绝对可以是任何东西。


1

发生此错误的原因是您为应用程序提供了错误的端口号。

just use http ports for your application to run

使用靠近8080号的端口,即:

本地主机:8090

为visual-Studio中的应用程序更改端口

goto project properties > web > Server > ProjectUrl


0

我已经尝试了以下方法:

  • 重新启动Visual Studio
  • 检查所有可能正在监听我的特定号码的可用端口,但它始终返回零结果。我的端口中没有进程在监听。
  • 我也尝试使用此方法,但结果为零。

    netstat -aon | 找到“:80”

  • 我也尝试使用但也返回零结果。

    netstat -ao | findstr

因此,我要做的是删除此“ Microsoft.VsHub.Server.HttpHostx64.exe ”,然后我的项目成功启动并在浏览器中启动。该错误已修复。我不知道为什么,但是它有效。

这是屏幕截图:

在此处输入图片说明


0

我遇到了同样的问题,但是当我使用管理员权限重新启动时,它解决了。(可能刚刚重启)


0

我今天遇到了同样的问题,在互联网上找不到任何东西。我已经使用端口2057多年了,但是突然之间,它不再起作用了。将其更改为另一个较低的数字(如2058)会给出相同的错误消息,但是当我将其更改为20057时,一切又恢复了。也许随着较低端口号的处理方式发生了变化。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.