Visual Studio 2017“无法连接到Web服务器'IIS Express'”

时间:2017-11-02 12:29:33

标签: visual-studio iis-express

如果我尝试启动我的.net核心应用程序,我会收到此消息。我意识到有很多帖子声称要解决这个问题,但我已经尝试了他们建议的所有方法,但没有一个工作。

如果我在调试下进入项目属性并更改端口,那么它将连接一次。然后,如果我再次尝试连接,它将再次给我相同的错误。然后,我可以将端口切换回原始端口,它将加载一次,然后在此之后的任何时间都会失败,直到我再次切换它。任何人都有他们使用的任何想法或修复?

谢谢!

32 个答案:

答案 0 :(得分:24)

我有这个问题。项目目录中有一个名为' .vs'的隐藏文件夹。关闭Visual Studio并删除此文件夹。问题将解决。

答案 1 :(得分:13)

我今天安装了核心2.0并将VS 2017更新到15.4.3,出现了同样的错误。

我最终将应用程序更改为在不同的端口上运行,它对我有用。

我试图删除vs文件夹,但没有用。

希望它有所帮助。

答案 2 :(得分:5)

我知道这个问题已经有了一个公认的答案,但没有一个解决方案对我有用,而我的解决方案可能对某人有所帮助。我正在使用 VS2017 ASP.NET Core 2.0 Razor Pages 项目。

错误刚刚开始出现没有明显的原因,我尝试了这里发布的解决方案。

我使用 dotnet run 命令从命令行运行Web应用程序,看看是否会出现任何有意义的错误,并且有关于URL未正确绑定的警告。我查看了我的项目 Properties \ launchSettings.json 文件,发现 applicationUrl 属性不同。

enter image description here

  1. 更改 applicationURL 的值,使它们相同
  2. 关闭项目并关闭VS
  3. 删除隐藏的.vs文件夹(如接受的答案中所述)
  4. 以管理员身份启动VS
  5. 您的应用应该可以正常使用。

答案 3 :(得分:3)

在解决方案中,如果在Visual Studio 2017中有多个使用ASP.NET Core的项目,并且您尝试使用相同的端口号,则会出现此错误。您的解决方案必须具有唯一的端口分配。

在项目中转到此处:Properties / launchSettings.json打开此文件并在此处编辑端口号。注意:这是您更改SSL端口的位置(两个位置)。

原因:VS / IIS Express维护绑定到解决方案中使用IIS Express作为服务器的所有ASP.NET Core项目。例如,如果您使用Kestrel或其他服务器,则不会出现此问题。 VS在解决方案中创建时为每个应用创建一个新端口,以确保您没有端口冲突。

如果您尝试使用Azure AD注册的应用程序回复端口并尝试“重复使用”您的应用注册,您可能会想到只需更改“应用”端口,这样您就不必在Azure中注册它;这不行。如果您只是在测试应用程序并希望重用注册,那么您必须确保您当前正在处理的应用程序是端口上的唯一应用程序 - 手动。如果您需要测试两个或更多应用程序,则必须像在生产环境中一样单独在Azure AD中注册它们。

答案 4 :(得分:2)

就我而言,问题是由HTTP和HTTPS的端口相同引起的:

enter image description here

端口必须不同:

enter image description here

答案 5 :(得分:1)

什么对我有用,而且非常简单:

  1. 右键单击项目
  2. 属性
  3. 调试
  4. 应用 URL:将端口更改为 5000

完成,希望对某人有所帮助。

答案 6 :(得分:1)

在使用netsh配置尝试使服务器可以从外部访问之后,我添加了一个新的iplisten条目。 IISExpress显示错误 无法连接到Web服务器'IIS Express' ,该错误在使用以下方法删除iplisten条目后已得到解决:

netsh http delete iplisten <ip-address>

您可以使用以下方式查看iplisten条目的当前列表

netsh http show iplisten

它们需要运行提升权限的(管理员)命令提示符。

在这种情况下,IISExpress似乎没有错误消息。

答案 7 :(得分:1)

我在Visual Studio 2019上遇到问题,来自master的干净分支。重启电脑即可解决问题。

我的大学说他每月大约有2次问题,而其他解决方案的尝试也没有效果。

答案 8 :(得分:1)

对我来说,以上解决方案均无效

但是将IIS Express Bitness更改为x64是有效的

答案 9 :(得分:1)

我通过以下方式解决了这个问题 在Windows Defender(防病毒,Win10)中的文件devenv.exe中添加排除项

如何知道这是问题所在; 当您加载项目防御程序时,系统会通知您未经授权的更改被阻止。如果这是问题所在,请添加上述例外。

答案 10 :(得分:0)

  • 如果您要对特定的IP地址(不是本地主机)进行硬编码,请检查它是否已更改。

答案 11 :(得分:0)

我的applicationUrl中的

Changin https-> http解决了我的情况。

答案 12 :(得分:0)

原因之一是端口被其他应用程序或系统使用。按照步骤确定端口问题。

  1. 您需要验证端口是否可用。

    • 在命令中替换您的端口号,并在管理命令提示符或任何其他 shell 中触发它。即我使用的是 1344 端口。
<块引用>

netstat -ano -p tcp |找到“1344”

enter image description here 如果任何进程使用给定端口,它将打印信息。 您将在上述命令结果的最后一列中获得进程 ID (PID)

  1. 转到任务管理器 -> 详细信息选项卡 -> 通过 Id 检查进程(如果不可见,请添加 PID 列)

enter image description here

  1. 由于端口被系统进程占用,我们应该在我们的项目中更改端口。

    否则,如果是其他程序,您可以终止该进程或在可能的情况下更改该程序中的端口。

答案 13 :(得分:0)

您的端口已被该特定用户阻止。更改端口或用户,或以其他方式允许该用户使用该端口。管理员通常拥有所有权限。

答案 14 :(得分:0)

对于那些像我一样使用 .Net Core 3.x 并且仍在苦苦挣扎的人,经过几天的搜索,我终于找到了问题 https://weblog.west-wind.com/posts/2020/Jan/14/ASPNET-Core-IIS-InProcess-Hosting-Issues-in-NET-Core-31 的提示。

<块引用>

在 .NET Core 3.x 中,IIS 的 InProcess 托管是默认设置。 OutOfProcess 托管在外部运行 Kestrel.exe,并将 IIS 代理请求发送到外部 Kestrel HTTP 主机。 InProcess 托管使用自定义 IIS 模块将自定义 .NET Core 主机引导到 IIS 主机进程中,从而提供更好的性能和更小的占用空间。

更改为“进程外”(右键单击“项目”>“属性”>“调试”>“Web 服务器设置”>“托管模型”),关闭 Visual Studio,删除隐藏的 .vs 文件夹(如先前评论中所述),然后运行 ​​IIS Express在 VS 中终于起作用了。如果您将其改回“进行中”以进行测试并且它不起作用,则必须在将其改回并关闭项目后再次删除 .vs 文件夹。


如果你和我一样,这让你越过一个障碍进入另一个障碍......

我的下一个问题是在 powershell (This webpage is not available (with error code "ERR_CONNECTION_RESET")) 中运行请求以 ping 服务器时遇到此错误 Invoke-WebRequest -Uri:https://localhost:{port}/{endpoint}This thread mentioning the error 将我引向 a thread that mentioned a missing iss express development cert,其中提到通过在管理 powershell 终端的 IIS Express 程序文件目录中运行 ./IisExpressAdminCmd.exe setupsslUrl -url:https://localhost:{port}/ -UseSelfSigned 来解决它。


当我尝试从 Visual Studio 运行 IIS Express 时,我也会在这里发布我的第一个问题,它是 Cannot find C:\Program Files\IIS Express\iisepxress.exe。出于某种原因,IIS Express 不仅安装在我的 Program Files (x86) 中,而且安装在我的第二个驱动器 (D:\Program Files (x86)) 中。在意识到无法更改 Visual Studio 寻找 IIS Express 的位置(即使它也安装在 D 驱动器上)之后,我卸载了 IIS Express(这可能是我的开发证书被删除的方式),{{3} }(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion > ProgramFilesDir 键)和 in RegEdit changed my Program Files directory back to the "C\Program Files" folder


最后,我可以使用 IIS Express 在本地运行我的 .Net Core API。

祝大家好运!

答案 15 :(得分:0)

重建解决方案为我解决了这个问题。

答案 16 :(得分:0)

我通过重启笔记本电脑解决了这个问题。

答案 17 :(得分:0)

我在VS2019中多次遇到此问题,然后我意识到当我进行小的编辑并重新启动IIS Express时,此问题更加明显。上面有关端口的一些讨论让我开始思考,因为我只是通过关闭浏览器来关闭应用程序。因此,我认为该端口未释放,并且下次启动失败。 我通过单击VS2019中的“停止调试”按钮开始关闭调试。这个问题对我来说再也没有发生。

答案 18 :(得分:0)

也可能只是在任务管理器中有iisexpress.exe进程在同一端口上运行。

我刚刚找到一对并杀死他们解决了这个问题,而无需删除任何.vs文件夹或更改端口或类似的东西。

答案 19 :(得分:0)

对我来说,VS2019在开始运行我们的项目时面临同样的问题。 因此,在笔记本电脑/台式机的“ DateTime”窗格附近的通知窗格中,右键单击IIS Express 图标。它将显示所有正在运行的应用程序,最后可以找到Exit。 点击退出,然后运行项目即可。这对我有用,没有关闭VS19项目。

答案 20 :(得分:0)

如果您使用netsh http add urlacl url=http://localhost:<port>/ user=everyone通过问题端口添加特定的url acl,则需要使用netsh http delete urlacl url=http://localhost:<port>/ user=everyone删除它。

另一种解决方案是以管理员身份运行Visual Studio,从而允许它覆盖urlacl。

答案 21 :(得分:0)

就我而言(VS 2019),我要做的就是在每次修改代码后重新运行应用程序之前,重新生成代码。

P.S。我正在编写服务器端Blazor。

答案 22 :(得分:0)

转到属性-选择“调试”标签-更改应用网址-例如到http://localhost:57520/

您的端口可能正在运行其他干扰因素。

这对我有用!

答案 23 :(得分:0)

对我来说,通过将launchsettings.json文件中的applicationUrl更改为不同的端口号,并使该文件中所有位置的url都相同。

答案 24 :(得分:0)

有时候以管理员身份运行Visual Studio可以解决此问题。

答案 25 :(得分:0)

我放弃了,选择以自托管方式运行项目,而不是在“播放/运行”下拉框中选择“ IIS Express”。

enter image description here

答案 26 :(得分:0)

我在applicationhost.config文件中添加了localhost选项,并以管理员身份运行Visual Studio,它对我有用。

    <binding protocol="http" bindingInformation="*:6873:localhost" />
    <binding protocol="https" bindingInformation="*:44320:localhost" />
    <binding protocol="http" bindingInformation="*:6873:192.168.137.1" />

答案 27 :(得分:0)

全部尝试。上面没有工作。 修改了applicationhost.config中的主机。

将localhost更改为127.0.0.1

PropertyGrid

答案 28 :(得分:0)

它可能无法完全指导您的案件,但我只需要重新启动(windows)系统即可。 @Turneye的diagnosis可能就是原因,他的解决方案可能会达到相同的结果。

答案 29 :(得分:0)

我遇到了这个问题。在管理员模式下运行VS为我解决了这个问题。

答案 30 :(得分:0)

在项目属性\“调试”部分中将“启用SSL”设置为false对我有用。

答案 31 :(得分:0)

当我重新输入应用程序池的身份帐户的用户名和密码后,此方法才起作用