如何在Visual Studio中解决IIS问题?

Pri*_*iya 74 visual-studio iis-express

我试图通过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   
---------------------------
Run Code Online (Sandbox Code Playgroud)

我看到了任务管理器,发现系统使用了PID 4,其描述是,NT Kernel & System. 所以我试图阻止它http service.所有依赖服务都已停止 但我在停止http服务方面遇到了一个问题

The service is starting or stopping.  Please try again later.
Run Code Online (Sandbox Code Playgroud)

所以,我试图手动停止并启动服务.但是结束进程被禁用.如果有人可以帮助解决这个问题,将会很有帮助

Phi*_*ith 152

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

花了 2 天的谷歌搜索后,我找到了一个对我有用的解决方案。我尝试使用的端口位于排除的端口范围内,您可以通过运行以下命令查看:

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

在我的案例中保留这些端口的罪魁祸首是 Docker for Windows 和 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
Run Code Online (Sandbox Code Playgroud)

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

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

  • 就像@Cory一样,我将 vs 中的端口更改为范围之外的端口,这很烦人,因为现在我每次执行此操作时都必须更改引用应用程序,但比完全重新启动更好。 (3认同)
  • 这对我有用,但我需要 Docker,所以我只是在启动时禁用它,而不是卸载它。 (2认同)
  • 另外更改项目使用的端口号可能“不太友好”。检查[此处](https://developercommunity.visualstudio.com/content/problem/353750/cannot-change-port-number.html)更改http和https端口号的解决方案(最后一个“技巧”仅有效) https 端口号)。 (2认同)
  • 哇!谢谢谢谢谢谢谢谢谢谢!!!!几个月来,这个问题一直是一个随机的烦恼,我找不到一篇文章真正解释为什么会发生这种情况。我不知道为什么我的笔记本电脑上激活了 Hyper-V。显然,它允许您在笔记本电脑上运行虚拟机,但由于我没有这样做的计划,所以我只是禁用了它。甩掉包袱!我希望这是我最后一次遇到这个恼人的错误! (2认同)

Chr*_*uer 108

来自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>
Run Code Online (Sandbox Code Playgroud)

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

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

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

C:\>netstat -ao | findstr 4026
TCP    12.0.0.1:4026        cs-pc:4026         LISTENING       9544
Run Code Online (Sandbox Code Playgroud)

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

  • 很棒的答案!您不仅描述了解决方案,还包括参数的含义.我希望所有答案都是这样的! (8认同)
  • 这对我有帮助,结果发现违规的PID是Chrome.exe.我重新启动了Chrome,问题就消失了. (7认同)
  • 使用`-n`开关也可以更快地实现这一点 - 它使用"数字"输出,这意味着它不会浪费时间查询DNS以便将IP地址解析为主机名. (6认同)
  • 我已使用我尝试运行的端口运行“netstat -ano | findstr &lt;port_number_to_search_for&gt;”,但未找到该端口。 (3认同)
  • 在高架cmd窗口中运行`TASKKILL/PID 2756/F`用您的进程ID替换`2756` (2认同)

小智 46

这个答案对我有用
1-打开 cmd 以管理员身份运行
2-键入 net stop winnat
您收到
“Windows NAT 驱动程序服务已成功停止”。
3-然后输入net start winnat,
你会得到
Windows NAT驱动程序服务已成功启动。
之后进入 Visual Studio 并按 ctrl+f5

  • 为什么这可以解决问题?幕后到底发生了什么? (2认同)

小智 30

对我有用的解决方案是,

要解决此问题,您必须暂时禁用 winnat 服务,只需运行此命令即可完成(必须以管理员身份运行)

净停止赢

启动您的 docker 服务并再次启动 winnat

净启动winnat

解决方案发布在http://www.herlitz.nu/2020/12/01/docker-error-ports-are-not-available-on-windows-10/

  • 我没有安装 Docker,但这解决了 Windows 11 和 IIS Express 中反复出现的问题。 (3认同)

Mus*_*ode 26

我有同样的问题.我刚刚重新启动Visual Studio,它工作正常.


小智 21

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

所以[对于Windows操作系统]只是:

  • 打开资源监视器(任务管理器 - >性能 - >打开资源监视器)
  • 单击" 网络"选项卡.
  • TCP Connections中,找到使用IIS Express使用的本地端口并关闭它的应用程序.(这是我的案例中的Firefox)


Joh*_*ard 15

如果 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>

对我来说,我无法取消阻止这些,我只是收到“访问被拒绝”,所以我最终不得不为我的网站选择另一个端口。


Qam*_*man 13

Visual Studio中IIS Express无法启动解决方案

  • 转到任务管理器
  • 搜索“应用程序框架主机”进程
  • 结束此进程
  • 尝试再次运行

If not successful, Try run this command in cmd: "net stop winnat"


Ste*_*rdt 11

在我们将解决方案从Visual Studio 2012升级到2015之后,我遇到了同样的问题.我来到这里并且netstat只是发现没有其他应用程序使用相同的端口.事实证明我有相同的站点,在我的解决方案中的applicationhost.configat Users/<username>/Documents/IISExpress/configapplicationhost.configthe .vs文件夹中映射了相同的端口.我应该注意,升级后问题并没有立即开始.它只是一天早上开始失败.一对夫妇重新启动似乎也没有解决问题.

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


小智 7

就我而言,执行以下操作就达到了目的:

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

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


Pie*_*ier 7

更新 Windows 10 和/或 Visual Studio 16+ 后,可能由于IISExpress 不再接受连接而无法注册任何开发网站的内部错误而发生localhost

要解决此问题,您只需重新注册绑定即可。为此,请从管理 shell 运行以下命令:

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