为什么以及如何解决?IIS Express“指定的端口正在使用中”


81

我们知道在Visual Studio中为Web应用程序分配了一个随机端口号。它在我的办公室桌面上工作正常。但是,当我将代码提取到便携式计算机(来自VisualStudio.com)并运行Web应用程序时。我收到一条消息说:

指定的端口正在使用中

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

推荐建议

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

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


我有同样的问题。我的问题是我在同一解决方案中有多个Web项目。即使他们没有运行。其他项目之一使用相同的端口。只要确保任何给定项目使用其自己的端口即可。
威胁

Answers:


52

我这样解决问题...

文件->打开->网站... 在此处输入图片说明

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

希望对您有所帮助。


4
完成此操作后,我必须重新启动。
Angrydust

4
在哪里选择IIS Express站点下的本地IIS
Prakash Joshi

2
此步骤未解决我的问题。完成这些步骤后,我也重新启动了Visual Studio,但没有任何帮助。
user1451111 17-10-19

完成此操作后,尝试运行解决方案时出现错误“无法连接到网络服务器iisexpress”。
Enrico

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

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


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

@bkwdesign,我对崩溃一无所知,也许您应该使用Admin Privilege来运行,还应该创建虚拟目录或将VS更新到最新版本,或者最后只是切换到标准IIS角色
Iman

30

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

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

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

解决方案

首先,我运行命令:

netsh http add iplisten ipaddress=::

来自提升的命令行过程。这解决了最初的错误,当尝试运行应用程序时,我不再遇到“使用中的端口”错误,而是出现了一个错误,指出该应用程序无法绑定到该端口,因为需要管理特权。(尽管我以管理员身份运行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. 重新启动电脑

从这里开始,一切正常。


哇,唯一让我着迷的解决方案。禁用Hyper-V使我获得了Windows 10灰暗的BSOD,这要归功于企业构建,但是由于netsh interface ipv4 show excludedportrange protocol=tcp我至少能够为该项目选择新的端口。
SharpC

1
杜德(DUDE)这不仅是正确的答案,还说明了它,而不仅仅是转储了CMD脚本(在大多数情况下,这很好)。非常感谢,如果可以的话,请投票100倍。
Ryanman'4

1
谢谢,这在安装docker之后发生在我身上。
MaxPower

1
这救了我,我一整天都感到沮丧。这使我找到了正确的解决方案。github.com/docker/for-win/issues/3171#issuecomment-459205576
穆罕默德·卡希夫

由于Hyper-V而出现此问题。谢谢你!
DylanSp

28

我有同样的问题,但是netstat和resmon中都没有出现任何过程。

对我来说解决问题的是关闭所有打开的浏览器窗口。


1
哇。那也对我有用。谁能解释为什么?
SJC

确认有时可以解决问题(使用Firefox作为标准浏览器),并且这绝对没有意义。
弗洛里安冬季

4
这对我没有用。没有正在运行的应用程序。只是正在使用的端口。没有正在运行的网页。只是一个错误。真痛苦
麦克(Mike)

2
我认为这有效的原因是当您发出Web请求时,浏览器正在使用任意数量的端口(通常在49152-65535之间),并且与IIS中配置的端口冲突
Hugh Jeffner,

这也对我有用。这没有任何意义,因为阻止端口的应用没有理由使用它。
詹姆斯·韦斯特盖特

28

这困扰了我一年多!

为了我,

  • 没有网站正在运行IIS Express
  • netstat -ano在命令行上运行:确定没有使用端口。

解决方案是运行

netsh http add iplisten ipaddress=::

从命令行。

快乐的日子,归功于:James Bryant!https://developercommunity.visualstudio.com/content/problem/110767/specified-port-is-in-use.html


不知道发生了什么,不知道该命令做了什么,但是它在这里其他解决方案失败的地方
起作用

4
该命令破坏了我的IIS,请谨慎运行。必须运行netsh http删除iplisten ipaddress = ::才能使我的本地IIS站点再次工作。
史蒂夫

同样也破坏了我的IIS,它开始说它需要管理权限才能运行。不得不还原它。
jswetzen

对于此后遇到管理员特权问题的用户,请查看@Philip Trenwith的回答,可能是Hyper-V排除的端口范围。
IronSean

18

您正在寻找netstat

打开管理命令外壳并运行

netstat -aob

并寻找端口10360。它将向您显示哪个可执行文件打开了该端口以及在任务管理器中查找的PID。(实际上,首先运行netstat -?在没有特权的shell中,因为我不赞成盲目运行您不了解的任何事情,尤其是在特权环境中。)

开关的作用如下:

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

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

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


那很整齐。现在,我至少拥有PID该应用程序的。谢谢。
布莱斯

9
该命令将产生大量噪声,因此,如果您想直接切入有问题的应用程序,请将结果通过管道传递给findstr,如下所示:netstat -aob | findstr '10360'
kmkemp 2015年

1
所有其他答案都使我不知所措,实际上,这使我能够找到问题的根源并解决问题。
休·杰夫纳

另外,您可以使用nestat -aob -p TCP只查看TCP端口
Shiroy

12
  1. 关闭VS
    1. 重新开始-右键单击并以管理员身份运行
    2. 再次运行您的项目。

如果假设该端口被其他进程使用,请在项目>属性>调试中更改端口,然后以管理员身份运行
Noman Chali

很难过,但这行得通。没有其他工作。由于我在相关端口下没有正在运行的进程,因此该错误完全错误。这似乎是来自Visual Studio和IISExpress的错误。为什么我必须将其关闭并再次运行,这没有任何意义。
迈克(Mike)

此步骤未解决我的问题。
user1451111 17-10-19

令管理员高兴的是,一次管理员运行是重新启动,端口更改,进程终止,netstat搜索,iplisten更改后所需要的。以用户身份运行时继续工作。
理查德

10

对我有用的简单解决方案:(积分他人答案的积分)

**My System Info:**
Windows 10 build : 1809
IIS Version      : 10.0.17763.1
Hyper-V          : Enabled
Docker           : Installed - 2.3.0.2 (45183)
  • 检查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 ...
    
  • 打开Visual Studio并导航到> Project> Properties> Web> Servers> Project Url

  • 使用未阻塞的端口。

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

  • 喝杯咖啡,分享爱意。(必填):)


3
这太棒了!谢谢
Grandizer

任何想法为什么一定范围被封锁?
J Santosh

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

这仍然是最佳解决方案。
文森特

3

如果netstat没有显示任何内容,请尝试重新启动。

对我而言,netstat在我的端口上什么也没有出现。我尝试按照@Clangon和@JT Taylor的建议关闭Google Chrome浏览器窗口,但无济于事。

但是,最后,系统重新引导成功了,因此,我只能假定其他原因正在秘密地使端口保持打开状态。也许只是花了比我准备好等待Chrome关闭后才发布端口的时间更长的时间。


正是我的情况!
user1451111 17-10-19


3

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来避免丢失太多设置)。


我以为这个解决方案会很好用,但仍然出现错误。对我来说有问题的端口(3333)根本没有出现在netstat -a中。
克里斯·沃尔什

1
@ChrisWalsh我再次遇到此问题,我还找到了为什么的其他信息,所以我更新了答案。您可能和我在同一条船上,该端口未被使用,但被其他内容保留(排除)。
约翰·伦纳德

2

打开任务管理器,然后仅关闭“ IIS Express系统任务栏”和“ IIS Express工作进程”的所有进程,然后重新运行项目

任务管理器流程详细信息


2

Visual Studio 2015

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

我希望这有帮助。


2
这与端口无关。请阅读问题。
UmarZaii

我已经阅读了问题,然后仅是我也回答了它,我也做了我在帖子中写的内容,并且对我有用。
saurav singh

我想那没关系。
UmarZaii

这为我解决了。只需重新启动Visual Studio,即可解决许多问题。
CapnChaos

这只是为我解决了。我不知道UmarZaii在抱怨什么。
Artexias

2

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

在启动项目/ ISS Express之后,可以重新启动已停止的服务,而不会出现问题。

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

如果Microsoft与HyperV和“正常” IIS Service一起对Visual Studio / IIS Express进行了一些集成测试,或者对VS / IIS Express使用的端口范围(以及应避免使用的端口)给出了一些指导,那将是很好的。


这是我的问题,由于ICS显然没有出现在netstat或Resource Monitor中,所以花了很长时间才进行追踪。谢谢!愚蠢的$%@ * &&!)$ *!
詹姆斯

非常感谢您发布此信息。这是唯一对我有用的东西。我认为这发生在为Web应用程序开发工作,然后选择通过USB与计算机共享Android手机互联网连接之间。我确实尝试了所有方法,从上面的<netsh http add iplisten ipaddress = ::>想法(有问题,需要删除),到尝试删除保留的范围(即使以管理员身份也拒绝访问)。重新启动,关闭Web浏览器等,直到我尝试了此操作后才起作用,因此再次感谢。
艾里斯特·史密斯

1

对我来说,谷歌浏览器是使用端口的过程。即使关闭了Chrome浏览器,我仍然发现该过程仍然存在(我允许Chrome浏览器“在后台运行”,以便接收桌面通知)。我进入任务管理器,终止了Chrome浏览器进程,然后启动了我的Web应用程序,它的运行非常有魅力。


1

对我来说,关闭所有应用程序并重新启动计算机。

窗口启动时,首先打开Visual Studio,然后打开浏览器,然后单击运行(F5)。

现在可以了。我不知道为什么


1

例如使用记事本++打开您的csproj,然后向下滚动到DevelopmentServerPort。只要将其更改为1024以上(如建议值)(例如22312),就可以将其更改为其他内容。还将IISUrl更改为http:// localhost:22312 /。保存更改并重新启动项目。


1

在我的情况下,没有使用指定端口的应用程序,Visual Studio的提升运行也无济于事。

对我有用的是重新安装IIS Express,然后重新启动计算机。


这是与2017年VS为我工作在Windows 10 1809年唯一的选择
整体开发人员




0

单击任务栏底部的通知,如果您收到诸如正在使用的端口之类的错误,请选择iiss图标,右键单击,然后单击退出,它对我来说就像是魅​​力


0

错误消息应该告诉您哪个应用程序已经在使用该端口-在我的情况下是explorer.exe,因此只是从任务管理器重新启动Explorer的一种情况。


0

我出现了同样的错误。我将Web服务设置为IIS中的应用程序,并通过以下方式对其进行了修复:

右键单击我的解决方案内的WebService项目>属性> Web>在“服务器”下,从IIS Express更改为本地IIS(它将自动创建所需的虚拟目录)


0

当已经使用端口xxxx时,总是有一个详细说明错误的PID(进程ID)。只需转到正在运行该应用程序的计算机上的任务管理器,单击详细信息,即可确定另一个应用程序是什么。然后,您可以决定是否要结束该过程


0

除此之外,我为我的一台计算机打开了完整的IIS功能,这似乎导致它间歇性地发生。

一段时间后,我也随机抱怨需要管理员权限来绑定站点,我以某种方式认为它正在查看完整的IIS配置(由于它不是按用户文件,因此确实需要管理员)。

如果您被卡住而没有其他帮助(并且您不想仅选择另一个端口),请检查是否已删除该端口。


0

FWIW,我尝试了很多这样的选择,但是我一无所获。然后我意识到在问题开始之前,我已经安装了VMWare Player。我将其卸载,此错误消失了。

我敢肯定有某种方法可以使它们共存,但是我真的不需要Player,所以我删除了它。如果您尝试了各种方法,但都无法正常工作,请考虑浏览一下您最近安装的任何程序(尤其是那些处理网络适配器的程序?),然后看能否将您带到任何地方。


0

在Visual Studio 2017中,选择项目/属性,然后选择Web选项。在默认项目URL旁边的IIS部分中,单击“创建虚拟目录”。这为我解决了问题。我认为在我的情况下,默认项目虚拟目录已在调试会话后以某种方式损坏。


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.