“无法启动 IIS Express Web 服务器”

我试图通过 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被 System 使用,它的描述是 NT Kernel & System. 所以我试图阻止 http service。 所有的依赖服务都停止了。但是我在停止像

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

因此,我尝试停止并手动启动服务。但 End 进程被禁用。 如果有人能帮助解决这个问题,那将会很有帮助

103173 次浏览

来自 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。

我也有同样的问题。我刚刚重新启动了 Visual Studio,它运行正常。

我有这个问题,当 升级 MVC 项目。我复制了新的 MVC。我现有的 csproj。Csproj 文件然后返回到一个完全工作的项目。我没有考虑的是旧版本中现有的端口号。Csproj.新项目有一个新的端口号,但共享项目/程序集名称。这足以让 IIS Express 失去理智并抛出此异常。

仅仅从 git 中挖掘旧的端口号并更改 IIS Express URL 以将其包含在 Project Settings 中就足以修复它。

在我们将一个解决方案从 VisualStudio2012升级到2015之后,我也遇到了同样的问题。我来到这里并运行 netstat,却发现没有其他应用程序使用相同的端口。事实证明,我的解决方案中的 applicationhost.config位于 Users/<username>/Documents/IISExpress/config.vs文件夹中的 applicationhost.config位于相同的站点,具有相同的端口。我应该注意的是,问题也没有在升级后立即开始。一天早上,它就开始不断地失败。几次重启似乎也没有解决问题。

从存储在“文档”中的站点中删除冲突站点并重新启动 VisualStudio 解决了这个问题。

在不进入命令控制台的情况下,最简单的第一步就是关闭所有应用程序(包括 VS) ,然后自己启动 VS 并再次尝试。可能是其他类似您的浏览器的应用程序导致了冲突。 在我的案例中,是 Chrome 导致了这个问题,在关闭所有程序并重新启动 VS 时解决了这个问题。我再次打开 Chrome,一切都很正常。

上面的 netstat 的东西是有用的,但是对我来说,只有当你不能做我所建议的。

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

所以(对于 Windows 操作系统)只要:

  • 开放资源监视器(任务管理器-> 性能-> 开放资源监视器)
  • 单击 网络选项卡。
  • TCP 连接找到使用 IIS Express 使用的本地端口的应用程序并关闭它。(这是火狐对我的情况)

我已经试过以下方法了:

  • 重新启动 VisualStudio
  • 检查所有可用的端口,可能正在监听我的具体数字,但它总是返回零结果。没有进程正在监听我的端口。
  • 我也试过用这个,但是没有结果。

    Netstat-aon | find“ : 80”

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

    Netstat-ao | findstr

所以我做的是删除这个“ VsHub. Server. HttpHostx64.exe”,然后我的项目成功启动并在浏览器中启动。错误已修复。我不知道为什么,但它的工作。

下面是截图:

enter image description here

转到 Web 项目 属性 > 网页 > 专案网址 > 更改端口 即: http://localhost:22345/ = > http://localhost:22346/ 希望这有帮助!

总结所有的答案。有两个解决方案。两个对我都有效。 - 解决方案一关闭使用相同端口的应用程序。 - 解决方案二配置 IISExpress 为项目使用不同的端口。

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

netstat -ao | findstr 443

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

解决方案二 (假设消息是: 未能为站点“ myProject. Website0”注册 URL”< a href = “ http://localhost: 433/”rel = “ nofollow noReferrer”> http://localhost:433/ ..。)。 在记事本 + + 中打开下面的文件: 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.../>标记。

我能够解决这个问题,删除一切从 <site></site>标签在

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

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

刚刚花了半天时间试图解决同样的问题,我觉得我应该添加的解决方案,最终为我工作。

如果 netstat表明问题没有被使用,仍然可以在完全不同的范围内尝试其他一些问题

我以前也遇到过这个问题,但是通常重新启动可视化工作室,改变端口(增加1)或者重新启动都可以解决这个问题。然而,在这种情况下,这些都没有帮助,而且 netstat没有发现一个相互冲突的过程。我甚至重新安装了 IIS 和视觉工作室,并删除了其他几个我怀疑可能会干扰的程序。似乎 IIS 试图启动同一站点的多个实例。

最后,我尝试运行没有 findstrnetstat。我直观地扫描了活动端口列表,注意到虽然我试过的那些没有列出来,但是有几个进程使用了类似范围的端口。因此,我寻找一个范围,这是免费的,选择一个端口号,这似乎是现在的工作。

我想听听有没有人能解释一下为什么会有用?

我只是有这个问题,即使 netstat 没有显示任何冲突。

下面的内容为我解决了这个问题:

  1. 关闭 VisualStudio
  2. 打开文件资源管理器
  3. 导航到违规项目的文件夹
  4. 删除 对不起垃圾箱文件夹
  5. 删除 * . user文件(这可能是可选的)
  6. 重新启动 VisualStudio 并重试

在我的案例中,做以下事情起到了作用:

  • 删除. vs 配置 applicationhost.config 中的 Site
  • 从文档 IISExpress 配置 applicationhost.config 中删除 Site
  • 从. csproj 中删除 IISUrl

当我重新启动 VisualStudio 时,它为项目分配了一个全新的端口号,并且运行良好

端口号不匹配

中的配置文件中找到的 Bindings 标记出现了问题。在我的解决方案文件夹下,端口号不匹配。绑定方式如下

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

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

我所做的就是删除绑定内容,运行我的 web 应用程序,然后它用不同的数字生成新的绑定,然后我把新生成的端口复制到我的设置中,然后错误就消失了。

我今天在 VisualStudio2019中遇到了这个问题,花了3个小时才最终解决这个问题。VisualStudio 使用2个文件来跟踪 SSL 端口号,因此必须同时修复两个端口号,并且必须在 VisualStudio 关闭时同时修复两个端口号。中的 applicationhost.config 文件。VS? ? ?配置解决方案的配置文件夹; 以及。你的 web 项目的 csproj.user 文件夹。 编辑这两个文件并删除有问题的配置。甚至可以删除这两个文件。然后在 VisualStudio 中重新打开应用程序。祝你好运!

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

这招对我很管用。

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

花了两天时间在谷歌上搜索后,我找到了一个适合我的解决方案。 我尝试使用的端口位于排除端口范围内,通过运行以下命令可以看到:

netsh interface ipv4 show excludedportrange protocol=tcp

在我的案例中,为 Windows 和 Hyper-V 保留这些端口的罪魁祸首是 Docker

解决方案

我卸载 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 现在保留了它的端口,而没有干扰我的应用程序所使用的端口: 预留港区

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

对我来说,我不能解除这些阻塞,我只是得到“访问被拒绝”,所以我最终不得不为我的网站选择另一个端口。

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

要解决这个问题,只需再次注册绑定即可。为此,从管理 shell 运行以下命令:

netsh http add iplisten ipaddress=::

出现此错误的原因是您向应用程序提供了错误的端口号。

just use http ports for your application to run

使用接近8080号码的端口, 即:

Localhost: 8090

在 Visual-Studio 中更改应用程序的端口

goto project properties > web > Server > ProjectUrl

在 VisualStudio 中启动解决方案失败

  • 转到任务管理器
  • 搜索“应用程序框架主机”进程
  • 结束这个过程
  • 再次尝试跑步

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

我的解决办法是,

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

网站胜出

启动您的码头服务,并开始重新赢得

净启动胜出

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

我使用的是 VS2019 Version 16.10.0 Preview 2.0,我刚刚在这里写到:

untick and save anв tick

未选中 Enable SSL = > Save = > check it back = > Save。

安装 IIS 的组件似乎起到了作用

在我的例子中,最简单的解决方案(也是经常有效的方法)是尝试从 Windows10安装 IIS 的一个组件(例如。FTP 伺服器)。这可以通过转到 Control panel-> Program & features-> Turn Windows features On or Off,然后打开一个 IIS 组件来完成。

奇怪的是,即使错误与 IIS Express Web 服务器(而不是 IIS)有关,但安装额外的 IIS 组件显然会改变系统中的某些内容。在那之后,系统再次开始工作。

我已经尝试了无数种方法,似乎端口没有被其他应用程序保留,也没有出现防火墙问题。

我注意到,当安装或打开与网络相关的应用程序时,这个问题就会突然出现。这些例子包括我的 Docker 桌面应用程序的更新、 VMware Workstation的安装、 超 V活动(比如运行 VM)等等。我没有确切地指出原因,但我知道这两者之间有某种联系。

我的站点运行良好,然后开始无缘无故地出现这个错误。我有许多东西打开(包括几个 VS 项目) ,不想重新启动。我也不想在这些解决方案上浪费时间,所以我只是更改了项目属性的 Project URL 上的端口号... 即时成功。

在安装 Docker之后确实发生了这种情况。

解决步骤 :

  1. Resource Monitor下检查 Network :

    • 任何网络进程都没有使用 Port 66666
  2. 尝试退出 Docker Desktop :

    • Port 66666仍然不可用。
  3. 检查排除端口范围 : netsh interface ipv4 show excludedportrange protocol=tcp

    • 端口确实在 Exclusion Ranges
  4. 尝试取消 Turn Windows Features On and Off中的 Hyper-V选项 :

    • Turn Windows Features On and Off中找不到 Hyper-V
  5. 试图从排除范围删除端口 :
    netsh int ipv4 add excludedportrange protocol=tcp startport=66666 numberofports=1 store=persistent

    • 失败,结果为 Element Not Found
  6. 受此 链接启发,尝试重新启动网络服务 :

      • 运行此命令后,通过运行 netsh interface ipv4 show excludedportrange protocol=tcp确认 port 66666已经从 Exclusion Ranges中消失
    1. 停止其他网络服务只是为了更有把握
      • net stop LanmanWorkstation
      • net stop WlanSvc
      • net stop WwanSvc
    2. 重新启动网络服务
      • net start WwanSvc
      • net start WlanSvc
      • net start LanmanWorkstation
      • net start winnat
  7. 确认不可用端口现在可用 :

      • Port 66666不再在 Exclusion Ranges
    1. IIS Express Web Server可以成功发射。
  8. 再次推出 Docker :

    • port 6666仍然可以使用。

希望这对大家有帮助。

解决方案要简单得多。只需转到状态栏,查找 IIS 快捷图标并停止站点。 解决方案: < a href = “ https://stackoverflow. com/a/69841149/8390589”> https://stackoverflow.com/a/69841149/8390589

这个答案对我有用
1-打开 cmd,以管理员身份运行
2型 净止赢
你得到了
“ WindowsNAT 驱动程序服务已成功停止。”
然后输入 < strong > net start winnat

你得到了
WindowsNAT 驱动程序服务已成功启动。
之后进入 Visual Studio,按 ctrl + f5 < br >

作为一个快速的解决方案,关闭 VS,重命名您的网站所在的文件夹,并在 VS 中再次打开网站(File—— > Open Web Site...)