无法连接到 Web 服务器“IIS Express”

Posted

技术标签:

【中文标题】无法连接到 Web 服务器“IIS Express”【英文标题】:Unable to connect to web server 'IIS Express' 【发布时间】:2020-02-09 07:09:15 【问题描述】:

我正在使用 Microsoft Visual Studio 2019 社区预览版,版本 16.4.0 预览版 1.0。我刚刚更新到 Windows 10 Pro Version 1903 OS build 18362.418 。使用 ASP.NET Core 3 web-app 项目(Blazor 服务器),当我按 F5 时,我发现错误

我可以手动去https://localhost:44333/,但是不方便。当我停止调试时,我也在任务栏手动关闭它。

对于另一个网络应用项目,问题不会发生。

当我选择或不选择选项Enable native code debugging时,不成功。

如何解决?

【问题讨论】:

您只想附加到进程吗?然后可能重复***.com/a/49297776/1260204(“..你必须在Visual Studio中附加“dotnet.exe”进程”) 这能回答你的问题吗? Unable to launch the IIS Express Web server 【参考方案1】:

过去我偶尔会遇到这个问题。我通常可以通过以下方式解决问题:

    单击任务栏的显示隐藏图标区域。您会看到一个 IIS Express 图标。 选择图标,您应该会看到您的网站已列出。在该菜单中向下钻取,点击“停止站点”。

在其他情况下,我曾让企业安全软件干扰 Visual Studio/IIS Express 操作。通常,您可以通过以管理员身份运行 Visual Studio 来解决此问题。我试图向安全人员解释这是多么糟糕的想法,但他们通常不明白。

最后,如果您正在运行 Asp.Net Core 应用程序,您可以放弃 IIS Express。如果您查看播放按钮旁边,有一个下拉列表显示“IIS Express”。如果您打开列表,您将在那里看到您的应用程序的名称。选择那个。您将使用 kestrel 而不是 IIS Express 运行。

【讨论】:

停止站点为我工作。对上面第 2 点的唯一小改动是您右键单击该图标以查看您的网站。【参考方案2】:

我遇到了同样的问题,我可以通过更改端口号来解决它。

    右键单击项目并选择属性 转到调试部分 在 Web Server Settings 下更改 App URL 端口 [只增加一个]

【讨论】:

阐明为什么这可能有效,因为这会强制重新生成“.vs\PROJECTNAME\config\applicationhost.config”。 您可以使用它来检查端口可用性,因为仅增加 1 可能不起作用。 netsh interface ipv4 show excludedportrange tcp 并且可以像这样删除它们(有时)netsh interface ipv4 delete excludedportrange tcp 4990 100【参考方案3】:

启用/禁用 SSL

这很容易解决。对我来说,在 Visual Studio 的项目调试选项卡中切换“启用 SSL”设置(只需将其更改为与当前设置的相反并运行项目)已经解决了这个问题。

据我了解,这可能有两个原因。首先,它会导致 Visual Studio 更新 Applicationhost 配置(稍后会详细介绍)。其次,有时会绑定 SSL 地址。因此禁用 SSL 可以解决问题。

应用程序主机配置

打开您的$(solutionDir)\.vs\config\applicationhost.config 文件并确保您的网站如下所示:

<site name="[YOUR PROJECT NAME]" id="3">
  <application path="/" applicationPool="Clr4IntegratedAppPool">
    <virtualDirectory path="/" physicalPath="//PATH/TO/YOUR PROJECT" />
  </application>
  <bindings>
    <binding protocol="http" bindingInformation="*:[YOUR_PORT]:localhost" />
    <binding protocol="https" bindingInformation="*:[YOUR_SSL_PORT]:localhost" />
  </bindings>
</site>

确保 iplisten 配置为 0.0.0.0

如果没有配置IP监听列表,可能会出现这个问题(注意,我不知道为什么)。

检查 netsh 以确保有 0.0.0.0 的条目

PS C:\Windows\system32> netsh http show iplisten

IP addresses present in the IP listen list:
-------------------------------------------

::     
0.0.0.0

PS C:\Windows\system32>

如果不存在,请添加正确的 netsh 规则。 为此,您需要一个管理员 cmd.exe 或管理员 PowerShell。

PS C:\Windows\system32> netsh http add iplisten ipaddress=0.0.0.0

确保没有任何东西绑定到您正在使用的地址

对我来说,这似乎是 Blazor 的一个问题。如果地址绑定到 Blazor 尝试使用的地址,这可能会导致问题。再次使用netsh 检查正在使用的内容。

netsh http show urlacl

一个看起来像这样的条目

Reserved URL            : http://*:50902/
    User: \Everyone
    Listen: Yes
    Delegate: No
    SDDL: D:(A;;GX;;;WD)

可以用这个命令删除

netsh http del urlacl url=http://*:50902/

【讨论】:

谢谢,我最近升级到了 Win 10 Pro,这时消息“无法连接到 Web 服务器 'IIS Express'”开始显示。运行netsh http add iplisten ipaddress=0.0.0.0 为我解决了这个问题。 在这上面花了 5 个小时,那一行为我做了 netsh http add iplisten ipaddress=0.0.0.0。谢谢 关闭 SSL 为我修复了它。谢谢! $ netsh int ipv4 show dynamicport tcp,在我的机器上从端口 49152 开始。所以请确保您的项目不使用高于该数字的端口。 循环“启用 SSL”对我有用。谢谢!【参考方案4】:

我想即使我迟到了,我也会投入对我有用的东西。 上面的解决方案对我不起作用。

    转到项目的属性 -> 调试选项卡 将 AppURL 中的端口号更改为 x + 1,即对于我的实例 http://localhost:44348 => http://localhost:44349 关闭解决方案 已删除应用程序主机配置 重新打开解决方案。 将端口号改回原来的

【讨论】:

【参考方案5】:

我遇到了与 OP 描述的完全相同的问题,我的意思是我收到了错误消息,但检查 IIS Express 图标,显示一切正常,因此手动转到该 url 工作正常。

尝试了上面描述的所有内容,包括

在 IIS Express 中停止站点 停止 IIS Express 退出VS重启VS 检查 .vs 文件夹中的所有内容 删除 .vs 文件夹 作为 POC 创建了一个全新的 ASP.NET Core 项目,运行正常

没有任何帮助。

我知道这作为“解决方案”很荒谬,但是在花了半个小时之后,我终于重新启动了我的机器,此后一切正常......值得一试

【讨论】:

重启工作,但问题是这个错误有时会在重启后立即发生。这很奇怪,对我来说,在某些解决方案中经常发生这种情况,但在其他解决方案中却没有。 尝试了很多其他解决方案...唯一有效的是关闭 SLN,删除 .vs 文件夹,重新打开解决方案。 关闭解决方案,放弃 .vs 文件夹并回收 IIS Express 对我有用。 这已经为我工作了好几次了【参考方案6】:

另一种选择,也是我更喜欢的一种选择,因为不必浪费时间与 IISExpress 打架,它是运行您的项目启动配置文件,而不是 IISExpress 配置文件。

Blazor 是一个 .NET Core 应用,因此您可以使用 Kestrel 对其进行调试。

【讨论】:

这会破坏您使用 IIS Express 获得的自动重新加载功能,并且不会回答 OP 的问题。 @ChristopherHaws 我不确定您在谈论哪种热重新加载 Blazor 的技术,但作为控制台应用程序运行绝对不会破坏这一点。此外,有帮助的答案是完全可以接受的,它们不必是“那个”答案。感谢您的意见,但是 IIS Express 是垃圾,我不会使用它,没有它我也能过得很好。 @ChristopherHaws 我刚刚做了一些研究和试验。 IIS Express 比 Blazor 的其他重新加载解决方案更糟糕,因为您无法在调试时使用它。 不确定你在说什么,我每天都使用 IIS Express 进行调试。另外,我没有说热重载,这是 ASP.NET 团队的一个功能。此时,“发生更改时自动重新加载”有两个选项。 1) 使用 IIS Express(在未调试时对代码进行更改时自动重新加载)或 2) 使用 dotnet run watch(在 .NET 5 中提供与 IIS Express 类似的体验)。至于使用 dotnet run (这就是这个答案所说的),这不允许网站自动重新加载 解决某些问题的方法是不要使用其他东西。 @broguyman 提供的解决方案实际上解决了 OP 提出的问题。【参考方案7】:

我通过关闭 Visual Studio (2019) 并重新启动它,以管理员身份运行解决了这个问题。

【讨论】:

【参考方案8】:

对我来说,我有另一个应用程序使用相同的端口,我将项目调试设置中的端口更改为其他端口。

【讨论】:

根据我的经验,这是 100% 的答案。我不知道为什么某个端口会被窃听,但是更改端口总是为我解决了这个问题。【参考方案9】:

将应用程序 url(通过右键单击解决方案 -> 属性 -> 调试 -> 应用程序 url)从 http://localhost:59017 更改为 http://localhost:5901(最后一个数字 7强>已删除)为我工作。

【讨论】:

【参考方案10】:

对我没有用 (包括删除.vs,删除objbin,清理项目,重新启动VS Studio,运行netstat -ao | findstr &lt;port number&gt;找出谁是使用我的端口等等)。什么都没有。

除了这个:

    以管理员身份打开 PowerShell 运行Get-Process -Id (Get-NetTCPConnection -LocalPort MY-PORT-NUMBER).OwningProcess(将端口号更改为您的端口号) 最后,就我而言,这表明这个进程:service host: windows push notifications system service 正在使用我的端口。注意这个过程的ID 和.. 转到任务管理器(更多详细信息)> 进程 > 通过 ID 查找进程并终止子进程(因为如果系统不可用,则无法终止父进程本身 )

就是这样。就我而言,它是windows push notifications system service。一旦我找到它并杀死它 - 一切正常无需重新启动整个计算机或更改端口号

【讨论】:

【参考方案11】:

删除 .vs 文件夹将解决此问题。

    转到应用程序位置 删除.vs文件夹(隐藏文件夹) 再次启动项目!

【讨论】:

【参考方案12】:

我有同样的问题。我已连接到我的组织 ***。我只是断开了 ***,重新启动 IIS 并再次尝试。现在可以正常使用了,

【讨论】:

【参考方案13】:

我遇到了与 IIS Express 完全相同的问题,似乎不知从何而来。我的解决方案是简单地打开 IIS 管理器并重新启动 IIS(在右侧面板中的操作 -> 管理服务器下)。结果,项目启动立即恢复工作。

【讨论】:

【参考方案14】:

我遇到了同样的问题,我一直尝试,我没有得到正确的解决方案。最后我使用以下步骤解决了。 在VS中转到工具=>选项=>项目和解决方案=>Web项目=>单击复选框-对网站和项目使用64位版本的IIS express。

有了这个,我摆脱了我的问题。

【讨论】:

【参考方案15】:

当同一工作站上有多个同名解决方案时,我似乎遇到了这个烦人的问题。主机文件最终具有名称 app、app(1)、app(2)、app(N) 等。此处的解决方案是根据您的喜好在 \app(N).vs\app\config\applicationhost.config 中手动调整主机文件,以与您在 Properties>Web>Project URL 中设置的任何端口对齐。您可能还需要卸载项目并在项目配置中设置相同的端口号。

【讨论】:

【参考方案16】:

如果没有任何效果(或者如果您只想让它快速工作),可以尝试另一件事:

卸载 IIS Express,然后重新安装 - 可以通过 Visual Studio 安装程序组件完成(添加/删除)。

【讨论】:

【参考方案17】:

上述所有解决方案都对我不起作用,但有效的是经过多个解决方案后的简单修复;

请按照以下步骤操作;

    转到 Visual Studio 中的项目/主解决方案文件夹 右键单击它并选择属性 转到调试选项卡 向下滚动到 Web 服务器设置并关闭 SSL

    再次运行您的解决方案,您应该能够继续 错误

【讨论】:

【参考方案18】:

这对我有用:

    删除项目中“Properties”文件夹内的“launchSettings.json” 在 Visual Studio 中打开项目 重建项目 调试 (F5) 或运行 (Ctrl + F5)。

【讨论】:

以上是关于无法连接到 Web 服务器“IIS Express”的主要内容,如果未能解决你的问题,请参考以下文章

无法连接到web服务器 IIS Express 解决办法

ASP.NET 5 MVC:无法连接到 Web 服务器“IIS Express”

小5聊VS运行调试报错无法连接到Web服务器IIS Express

vs2015 无法启动IIS Express Web服务器

VS 调试 无法启动IIS Express Web 服务器(进程不存在)

使用 Microsoft.Web.Administration 后无法启动 IIS Express Web 服务器