无法连接到 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
,删除obj
和bin
,清理项目,重新启动VS Studio,运行netstat -ao | findstr <port number>
找出谁是使用我的端口等等)。什么都没有。
除了这个:
-
以管理员身份打开 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”的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET 5 MVC:无法连接到 Web 服务器“IIS Express”
小5聊VS运行调试报错无法连接到Web服务器IIS Express