为什么以及如何修复?IIS Express"指定的端口正在使用"

Bla*_*ise 66 iis-express visual-studio-2013

我们知道在Visual Studio中为Web应用程序分配了一个随机端口号.它在我的办公桌面上工作正常.但是,当我将代码拉到我的笔记本电脑(来自VisualStudio.com)并运行Web应用程序时.我收到一条消息,说,

指定的端口正在使用中

端口10360已被另一个应用程序使用.

建议

  1. 尝试切换到10360以外的端口,高于1024.
  2. 停止使用端口10360的应用程序.

我可以Recommendation #1通过将端口更改为其他类似13333 来修复它.但我很好奇端口10360发生了什么.如何检查使用端口10360的应用程序?我该如何停止该申请?

Phi*_*ith 59

我在 Windows 10 上运行 Visual Studio 2019 时遇到了类似的问题。一些适用于其他人的解决方案似乎包括:

  1. 更改应用程序端口号。
  2. 每次应用程序启动时,让 Visual Studio 自动分配一个端口号。
  3. 重新启动 Visual Studio
  4. 重新启动计算机。

不幸的是,这些解决方案都不适合我,分配另一个端口号确实有效,但不是一个可接受的解决方案,因为我的应用程序在指定端口上运行很重要。

解决方案

首先我运行命令:

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

从提升的命令行进程。这解决了最初的错误,当尝试运行应用程序时,我不再收到“正在使用的端口”错误,相反,我现在收到一个错误,指出应用程序无法绑定到端口,因为需要管理权限。(虽然我以管理员身份运行 Visual Studio)

第二个错误是由 Hyper-V 将端口添加到端口排除范围引起的,我的应用程序使用的端口在这些排除范围之一中。您可以通过运行以下命令来查看这些端口:netsh interface ipv4 show excludedportrange protocol=tcp

要解决第二个错误:

  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. 重新启动计算机

从这里一切正常。

  • DUDE 这不仅是正确的答案,你实际上解释了它,而不是仅仅转储 CMD 脚本(这在大多数情况下都很好)。非常感谢,如果可以的话我会投票 100 倍。 (4认同)
  • 谢谢,我安装docker后就出现了这种情况。 (3认同)

小智 47

我这样解决问题......

文件 - > 打开 - > 网站... 在此输入图像描述

之后,选择IIS Express站点 下的本地IIS, 删除不需要的项目.

希望这个帮助.

  • 这样做后我不得不重新启动. (2认同)
  • 在哪里选择IIS Express站点下的本地IIS (2认同)
  • 这一步没有解决我的问题。按照步骤操作后,我也重新启动了 Visual Studio,但没有任何效果。 (2认同)
  • 尝试这个解决方案/sf/answers/4640366671/ (2认同)

Ima*_*idi 33

  1. 在解决方案中更改它(右键单击) - > 属性 - > web选项卡
  2. 单击" 创建虚拟目录"(在项目URL文本框前面)

IIS Express端口更改用于修复正在使用的端口

  • 我不想一遍又一遍地更改我的 .sln 属性页。就我而言,当我在 Visual Studio 中执行导致 Visual Studio 崩溃的操作时,属性页上定义的端口(如上所示)将被锁定。 (2认同)

Cla*_*gon 27

我有同样的问题,但netstat和resmon都没有出现过程.

是什么解决了我的问题是关闭所有打开的浏览器窗口.

  • 这对我没有用。没有正在运行的应用程序。只是正在使用的端口。没有正在运行的网页。只是一个错误。真痛苦 (3认同)
  • 我认为这样做的原因是当您发出 Web 请求时,浏览器对 *source* 端口使用任意数字(通常在 49152 - 65535 之间),这与 IIS 中配置的端口冲突 (2认同)

小智 27

在我自己的案例中,这个问题的原因有点不同。一切都工作正常,直到我开始使用 docker 来做其他一些事情。启动 docker 以一种或另一种方式将一些新的端口范围添加到端口排除范围中。该怎么办:

  1. 打开命令提示符(以管理员身份)
  2. 运行:netsh interface ipv4 show exceptedportrange protocol=tcp(您应该在排除的端口范围中看到您的应用程序正在使用的端口)
  3. 运行:net stop winnat
  4. 运行:netsh interface ipv4 show exceptedportrange protocol=tcp(此时,受管理端口排除范围应减少)
  5. 运行 net start winnat。

如果问题是由 Windows NAT 驱动程序 (winnat) 引起的,那么现在应该没问题了。


Lia*_*ing 23

这让我困扰了一年多!

为了我,

  • 没有网站在运行iin IIS Express
  • 没有任何东西使用端口,如运行:netstat -ano在命令行确定.

解决方案是运行

netsh http add iplisten ipaddress=::

从命令行.

快乐的日子,并归功于:詹姆斯布莱恩特!https://developercommunity.visualstudio.com/content/problem/110767/specified-port-is-in-use.html

  • 此命令破坏了我的IIS,请谨慎运行。必须运行netsh http删除iplisten ipaddress = ::才能使我的本地IIS站点再次工作。 (3认同)
  • 对于那些在此之后遇到管理员权限问题的人,请查看 @Philip Trenwith 的答案,它可能是 Hyper-V 排除的端口范围。 (2认同)

Nav*_*r V 17

对我有用的简单解决方案:(归功于其他人的答案组合)

**My System Info:**
Windows 10 build : 1809
IIS Version      : 10.0.17763.1
Hyper-V          : Enabled
Docker           : Installed - 2.3.0.2 (45183)
Run Code Online (Sandbox Code Playgroud)
  • 检查 CMD 中的阻塞端口范围(管理员)

    >> netsh interface ipv4 show excludedportrange protocol=tcp
    
    (Sample output):
    Protocol tcp Port Exclusion Ranges
    Start Port    End Port
    ----------    --------
    49696       49795         (SEE HERE, 49796 to 49895 is not blocked)
    49896       49995
    ... list goes on ...
    
    Run Code Online (Sandbox Code Playgroud)
  • 打开 Visual Studio 并导航到 > 项目 > 属性 > Web > 服务器 > 项目 URL

  • 使用未被阻塞的端口。

    (Sample port):
    http://localhost:49796/
    
    Run Code Online (Sandbox Code Playgroud)
  • 重新启动 Visual Studio(如果需要)

  • 喝杯咖啡,分享爱。(必需的) :)

  • 知道为什么某些范围被封锁吗? (9认同)
  • 这太棒了!谢谢 (3认同)

小智 16

你在找netstat.

打开管理命令shell并运行

netstat -aob

并查找端口10360.它将显示可执行文件打开端口以及在任务管理器中查找的PID.(实际上,netstat -?首先在无特权的shell中运行,因为我不赞成盲目地运行任何你不理解的东西,特别是在特权环境中.)

这是交换机的作用:

-a 显示所有连接或打开端口,而不仅仅是活动端口 - 您想要的端口可能正在侦听,而不是活动.

-o显示连接或端口的拥有PID,因此您可以在任务管理器的"进程"选项卡中找到该进程.(您可能需要在任务管理器中添加PID列.查看 - >选择列)

-b显示打开连接或端口所涉及的二进制文件.这是需要提升访问权限的那个.

  • 该命令会产生很多噪音,所以如果你想直接切入有问题的应用程序,将结果传递给findtr就像这样:`netstat -aob | findstr'10360' (7认同)

小智 13

  1. 关闭VS.
    1. 再次启动 - 右键单击​​并以管理员身份运行
    2. 再次运行您的项目.


Muj*_*idi 6

在管理模式下运行 Visual Studio 解决了我的问题


小智 6

对我来说,“指定端口正在使用”错误通常可以通过停止“Internet 连接共享(ICS)”(SharedAccess)和“万维网发布服务”(W3SVC)服务来修复(实际上效果很好)。

项目/ISS Express 启动后,停止的服务可以再次启动,不会出现任何问题。

每当我收到错误时,端口(在 50000 范围内)肯定没有在使用中(使用 netstat 和 tcpview 检查)。

如果 Microsoft 对 Visual Studio / IIS Express 与 HyperV 和“普通”IIS 服务一起进行一些集成测试,或者就 VS / IIS Express 使用哪些端口范围(以及要避免哪些端口)提供一些指导,那就太好了。


Jon*_*ran 5

  1. 删除.sln文件(如果有)。
  2. 打开文件C:\ Users \ NN \ Documents \ IISExpress \ config \ applicationhost.config
  3. 在configuration / system.applicationHost / sites中找到有问题的站点,然后删除整个站点部分。
  4. Visual Studio的“ Open Web Site ..”和项目将被赋予一个随机的新端口。


小智 5

视觉工作室2015

  • 关闭在 Visual Studio 中打开的所有文件。
  • 然后关闭应用程序并退出 Visual Studio。
  • 打开 Visual Studio,它应该可以成功运行。

我希望这有帮助。

  • 这与端口无关。请阅读问题。 (2认同)

Joh*_*ard 5

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>

然而,就我而言,我无法解锁该范围,我只是得到“访问被拒绝”,所以我最终不得不为我的网站选择另一个端口。

我原来的解决方案:唯一有效的是删除解决方案文件夹中的 .vs 文件夹。(我发现你可以直接删除 .vs/config/applicationhost.config 以避免丢失这么多设置)。