ChatGPT解决这个技术问题 Extra ChatGPT

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

我在做什么:

打开 Visual Studio 社区 2015

文件 -> 新建 -> 项目

在 Visual C# 下:Web -> ASP.NET Web 应用程序

Web应用程序

然后按 f5 弹出错误“无法连接到 Web 服务器 'IIS Express'”。

删除位于 Documents\IISExpress\config 中的 applicationhost.config 不会更改错误消息。 (program filesprogram files (x86) 中还有一个 IISExpress 文件夹。)

我注意到的东西,我不知道这是否是一个问题:

未找到引用的文件“lib/jquery-validation/jquery.validate.js”。

我得到了一个带有 rawcap 的转储,但我没有注意到很多。那里有一些东西:

"Framework":{"FrameworkName":"DNXCore,Version=v5.0","FriendlyName":"DNX Core 5.0","ShortName":"dnxcore50","RedistListPath":null}

我没有注意到问题,但如果可以帮助找出我无法连接到 Web 服务器的原因,我有网络数据。我立即得到一个 RST,ACK,所以我猜端口已关闭,无论此 Web 服务器是什么,都没有设置。

有关此问题的更多信息:800700c1 error from /trace:error

我试过了:

删除 applicationhost.config (并更改端口号)

以管理员身份运行 Visual Studio

删除 Documents 中的 IISExpress 文件夹(在重新安装文件夹之前更改错误消息)

关闭和打开 ssl,将 url 复制到启动框。 (注意:我没有使用 ssl)

清除所有 sfc /scannow 错误

以 x86 版本和 64 位版本启动 iisexpress

尝试打开visual studio时右键单击并以管理员身份打开..
谢谢,但这也没有用。
在完全没有改变之后,每隔一段时间就会发生这种情况。这个问题已经存在了一段时间,MSFT 仍然没有解决。讨厌他们,他们的支持很糟糕。拧他们。
这篇文章解决了我的问题-> overengineer.net/…

C
Community

在为 Visual Studio 2015 安装更新 2 后,我开始遇到同样的错误。我尝试了上面的一切,但没有运气。但是,我找到了一个适合我的解决方案:

删除 YourSolutionFolder\\.vs\config\applicationhost.config 文件(注意:.vs 是隐藏文件夹) 打开 Visual Studio,右键单击网站 > 属性 > 调试选项卡 > Web 服务器设置 > 应用程序 URL - 更改端口号。

如果您已将 IIS 配置为使用相同的端口,(停止应用程序/使用不同的端口)并重试。


对我来说是.vs\config\<MyProject>\config\applicationhost.config
对于 Net Core 2.2 项目 - 经过一场巨大的斗争并尝试了从删除 .vs 文件夹、删除 IIS Express 配置、更改端口号、更改绑定以及以管理员身份运行 VS 等所有操作后,我最终通过 1. 关闭 VS,2. 删除解决了问题launchSettings.json 3. 打开重新生成 launchSettings.json 的 VS。文件已损坏或不正确,甚至当它更改导致失败时,都不明显。
谢谢@QuintonSmith。您的解决方案在 .NET Core 3.1 中也适用于我。
谢谢昆顿,你挽救了一天
任何使用 @QuintonSmith 的方法删除位于 <project>/Properties 文件夹下的 launchSettings.json 的人。我花了一分钟才找到它的确切位置,但它成功了!
ᴍᴀᴛᴛ ʙᴀᴋᴇʀ

退出 VS 并删除 (project)\.vs\applicationhost.config 文件。重启VS。它应该开始工作。


这在 VS2017 中对我有用,无需更改端口。
为我完成此操作后,需要以管理员身份运行 Visual Studio,并且工作正常,谢谢!
尤其是 RUN AS ADMINISTRATOR 对我来说很重要。 (虽然我有 Asp.net Core 2.0 VS2017。
删除了整个 .vs 文件夹并为我工作,仅此而已
重新启动 VS2017 并没有修复,但重新启动计算机为我修复了它。不需要更改端口或删除文件夹。希望它可以帮助别人。
C
Community

尝试使用不同的端口。我刚刚建立了一个新的 Core 1.0 RC1 项目并得到了同样的错误。

右键单击 web 项目

调试选项卡

关闭并再次打开启用 SSL,它应该生成一个新的随机端口

复制 SSL URL 并粘贴到启动 URL 框中

运行项目

为我工作(TM)。

答案来自:https://stackoverflow.com/a/28650554/134761

https://i.stack.imgur.com/yn1VP.png


它有效,但仅当我使用端口 60000 时。端口 6000 返回错误:不安全的端口。
在 Visual Studio 2019 中不起作用 - 它每次都使用相同的端口。
@EJoshuaS-ReinstateMonica 我相信这已经发生了很大变化。查看您的 Startup 类是如何配置的以及您拥有哪些 appsettings.json 文件。还有 Properties\launchSettings.json 在本地启动不同的配置文件。 docs.microsoft.com/en-us/aspnet/core/fundamentals/… dejanstojanovic.net/aspnet/2018/december/…
谢谢哥们,你帮了我很多,我一直在努力解决这个愚蠢的错误:)
D
Daniaal

我在 .net core 2.1,visual studio 版本 15.9.6 上遇到了这个问题。当我删除 .vs 文件夹时,我重新打开了 Visual Studio,但问题仍然存在。下面对我有用的解决方案:

删除 .vs 文件夹(它是一个隐藏文件夹)。重新启动计算机。

其他解决方案:

关闭 Visual Studio,从项目文件夹中删除 bin 和 obj 文件夹。打开项目然后重建解决方案。

尝试以管理员身份运行 Visual Studio。

清洁解决方案然后重建

清洁解决方案。 2) 退出 Visual Studio。 3) 删除 .vs 文件夹 4) 重新打开 Visual Studio

清洁解决方案。 2) 退出 Visual Studio。 3) 删除 .vs 文件夹 4) 重新打开 Visual Studio

重启机器(如果你负担得起)


我可以通过仅关闭 Visual Studio、删除 .vs 文件夹并再次声明 Visual Studio 来做到这一点。
是的,它适用于一些不适用于我的情况。不知道为什么它不起作用。唯一做的就是重新启动我的电脑。
蓝屏后得到这个。不得不删除 .vs 文件夹并重新启动计算机。重新启动视觉工作室是不够的。
我的步骤被压缩为:1)清洁解决方案。 2) 退出 Visual Studio。 3)删除.vs文件夹
@samneric 谢谢你,我会为你添加答案:)
Q
Quinton Smith

按要求将我的评论复制到答案中。

对于 Net Core 2.2 项目 - 经过大量的努力并尝试了从删除 .vs 文件夹、删除 IIS Express 配置、更改端口号、更改绑定以及以管理员身份运行 VS 等所有操作后,我终于解决了问题

关闭VS,删除launchSettings.json 打开重新生成launchSettings.json 的VS。

文件已损坏或不正确,甚至当它更改导致失败时,都不明显。


这对我有用,是一个简单的解决方案 - 谢谢
除了重新启动计算机之外,只有其他适用于我的 .NET Core 3 项目的东西。
S
Saurin Vala

当我更新项目的端口号时,我在 .net core 2.0 中遇到了这个问题。

我能够分两步解决问题:

第 1 步:删除隐藏在主解决方案文件夹中的 .vs 文件夹。 (在此之前关闭visual studio)然后当你再次启动visual studio时,其中的这个文件夹和文件(applicationhost.config)将由visual studio自动创建。

STEP 2 : 对于多个启动项目,如果您仍然面临问题,则一个一个运行项目作为启动,然后作为多个启动项目运行。


解决方案奏效了。谢谢 :) DELETE .git 文件夹怎么样?
A
Akbar Badhusha

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

右键单击项目并选择属性转到调试部分在 Web 服务器设置下更改应用程序 URL 端口 [只需增加一个 :)]

https://i.stack.imgur.com/X9YCk.png


你不是一个开始,而是一个超级巨星!谢谢它的工作
对我不起作用。
c
codevision

在我的情况下,这是在 IIS Express 尝试连接的同一端口上侦听的其他应用程序。我必须运行 netstat -ao 才能查看使用相同端口和关闭应用程序的进程的 PID。在我的案例中,应用程序是 Viber。


就我而言,它是 OneDrive。重新启动使其更改端口,然后我能够运行我的应用程序。
T
Tadej

我刚刚将我的配置文件从“IIS Express”更改为“MyProjectName”(我认为它使用 kestrel 作为 http 服务器而不是 IIS),现在它工作正常:

https://i.stack.imgur.com/XUmLU.png


这不是解决方案,而是一种解决方法。您的回答建议使用不同的服务器 - Kestrel - 而 OP 显然正试图让 IIS-Express 工作。
经过三天的拔毛后,这个解决方案帮助了我。谢谢
T
Tadej

以管理员权限运行 VisualStudio 并运行项目。然后关闭 VisualStudio 和所有错误并以普通用户再次运行 VisualStudio。

这为我做到了。

看起来 IIS 必须使用管理员权限向某些配置写入一些内容(端口 80 不适用于普通用户,但端口 6767 工作正常)。


只有管理员权限才允许应用程序绑定到小于 1024 的端口号。这就是 6767 适合您的原因。
M
MedievalCoder

其中许多回答并没有完全解决手头的问题。对我来说真正的问题是我在 applicationhost.config 文件中有两个使用相同端口的绑定,并且我没有打开第二个(非本地主机)绑定的端口。 VS 将允许您在这些情况下仍然运行,但前提是您处于管理员模式(因此上述所有答案)。

您实际上是在同一端口上创建应用程序的两个 IIS express 实例,因此更改 applicationhost.config 文件中的一个端口将允许您继续。然而,有两个不同的 applicationhost.config 文件。您将需要选择具有您在项目属性中看到的绑定 IP 和端口的那个

https://i.stack.imgur.com/VQyHh.png

转到可以查看项目解决方案和项目文件夹的文件夹(在文件资源管理器中显示隐藏的项目)。导航到您隐藏的 .vs 文件夹 -> “YourAppName”文件夹 -> 配置。它应该包含您在项目属性中看到的绑定信息。

例子:

<bindings>
    <binding protocol="http" bindingInformation="*:7000:127.0.0.1" />
    <binding protocol="http" bindingInformation="*:7000:192.168.0.5" />
</bindings>

将这些端口号之一更改为“7000”以外的其他端口号,这样您就不会尝试使用相同的端口。

就我而言,我使用的不是本地主机地址的 192 地址,因此我需要使用一些 netsh 命令来打开该端口并启动 ip。这是一个 Link,它显示了如何为 IIS Express 打开端口以允许远程连接。除非您运行列出的那些 netsh 命令,否则以普通用户身份运行将不起作用。

以下是 netsh 命令:

netsh http add urlacl url=http://192.168.1.42:58938/ user=everyone netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=58938 profile=private remoteip=localsubnet action=allow

复制这些命令并在 cmd 中使用 ADMIN 权限以及您的 IP 地址和端口号运行它们。


这是我的解决方案,谢谢
S
Svenmarim

澄清

这里真的很多答案都是一样的,比如“重启,它又神奇地工作了”。

好吧,10 次中有 9 次的人会遇到像 OP 这样的问题,这是因为 IP 地址已经在使用中。

回答

可能有 2 个 IP 地址正在使用中。您可以通过以下方式找到它们:

1)右键点击启动项目

2) 点击“属性”

3) 单击“调试”选项卡

在这里您可以看到您的“App URL”和“SSL URL”。

如果您的“应用程序 URL”正在使用中,只需在此处更改并保存它,它应该可以再次使用。

如果您的“SSL URL”正在使用中,请关闭 VS,删除项目隐藏 .vs 文件夹中的“applicationhost.config”文件,然后再次打开 VS。


A
Amit Kumar Verma

对我有用的解决方案是:关闭 VS 项目在文件资源管理器中,导航到项目并删除整个“.vs”文件夹重新启动项目以“调试”方式运行显然,它与“应用程序主机”有关.config”文件。

享受!


B
Benzara Tahar

如果您负担得起重新启动机器的费用,那么就这样做👌,在尝试解决此问题近一个小时后,这解决了我的问题,没有希望🤯。


我做了所有复杂的答案(有些有效),但只是重新启动计算机就可以了:)
同意。在重新启动之前尝试了一切。但重新启动是唯一有效的方法。
r
redwards510

我可以通过改变一个东西来切换这个错误。在我的 ASP.Net Core 1.0 RC2 Web 应用程序项目的 launchSettings.json 文件中:

  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "https://localhost:18177/",
      "sslPort": 0
    }
  },

  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:18177/",
      "sslPort": 0
    }
  },

我已更改为 https 以尝试使用该协议运行项目。显然这里不是进行这种改变的地方。我怀疑它在同一个端口上创建了多个绑定,而 IIS Express 不喜欢这样。


我必须这样做来增加端口号。我原来的帖子被“卡住”了,我现在没有时间重新启动或弄清楚如何修复它
突出显示更改:http 而不是 https
J
Jeff

我遇到了同样的问题,但我修复它的方法是转到 applicationhost.config 并删除我没有添加的端口(我猜是 IIS Express),它将我的特定端口站点放在另一个端口上。

这是我的绑定的配置文件:

<bindings>
      <binding protocol="http" bindingInformation="*:54764:localhost" />
      <binding protocol="https" bindingInformation="*:44360:localhost" />
</bindings>

我删除了第一个绑定项,因为我想要的唯一端口是 44360。我的配置文件现在看起来像这样:

<bindings>
      <binding protocol="https" bindingInformation="*:44360:localhost" />
</bindings>

现在我在调试时看不到错误。

我还注意到我项目中的第二个 API 也分配了端口 80,我也将其删除。


M
Muhannad

从项目文件夹中删除 bin 和 obj 文件夹并重建。


虽然手动清理经常会有所帮助,但在这种情况下它不会解决问题,因为问题存在于 applicationhost.config 文件中,并且很可能是由于尝试使用相同的 IP 地址两次造成的
为我工作,因为在那之前我并没有真正做任何改变
E
Enrico

对我来说,问题是另一个进程正在使用相同的端口。 (在我的情况下,Outlook 使用与我的网站相同的端口,因此我的网站无法启动)

是的,您可以更改本地端口,但如果您正在运行 API 或其他应用程序需要的东西,您并不总是希望这样做。

要获取哪些应用程序正在使用哪些端口的列表,请打开 CMD 并键入“netstat -aon”,您将获得一个端口列表。找到您的站点应该使用的端口,或者您想要使用的端口并记下/记住 PID。

现在打开任务管理器并单击选项卡“详细信息”。使用您的 PID 查找进程并结束它。现在您应该能够使用该端口启动 IIS Express。


n
noobprogrammer

我刚刚清理了我的解决方案,然后重新构建它,最后按 F5 并且它起作用了!很简单。


N
Nick

我不会假装完全理解是什么 MS 错误造成了这个问题,但这是另一个潜在的解决方案:

在 .vs/config/applicationHost.config 文件中,找到 <system.applicationHost><applicationPools> 部分。在池下,确保 managedRuntimeVersion 属性值与系统 IIS 配置中的值(和/或已安装的 .NET 框架的版本)匹配。

例如,您可能会发现(和我一样)生成的文件具有:

    <add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />

就我而言,您可以将其替换为:

    <add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0.30319" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />

请注意从“v4.0”到“v4.0.30319”的替换。这解决了这个问题。

似乎发生了什么:

我相信 VS 正在为 .NET 框架生成一个带有“默认”版本的 applicationHost.config 文件,该文件可能与系统上安装/配置的特定版本不匹配。您可以通过在进程监视器中跟踪执行并找到 iisexpress.exe 的命令行来调试/观察此问题。运行添加了 /trace:error 的此命令会生成一条有关无法预加载 v4.0 版本的 CLR 的更多信息性消息。以机智:

启动 IIS Express ... 尝试预加载 CLR 版本 v4.0 时失败。 hr = 80131700 无法初始化 W3WP_HOST hr = 80131700 进程模型关闭调用无法启动 iisexpress。

无论如何,认为这可能对其他人有帮助,因为在网上有多个参考资料和不良信息是很常见的,而且我个人现在已经打过几次了。


这些解决方案都不适合我,如果您安装了默认的 Windows IIS(Windows 随附)并可以访问它,请尝试使用它,这解决了我的问题,只需在此处添加新网站或新应用程序即可完成,无论如何,IIS Express 无法打开页面很奇怪。如果您需要跟踪它,只需使用 ctrl + alt + p 快捷键将其附加到进程并选中 Show process for all users 并选择 w3wp.exe(有时需要刷新网站才能找到 w3wp.exe)然后点击 Attach 按钮.
P
Prolog

对我来说,当我在 DOS 提示符上添加 iplisten 时,IIS Express 无法访问,如下所示:netsh http add iplisten MyIPAddress。我通过像这样删除 iplisten 来修复它:netsh http delete iplisten MyIPAddress


我订阅:在尝试使用 netsh 配置尝试使服务器可以从外部访问后,我遇到了这个问题。忘记了我做了什么并尝试了几乎所有其他答案,直到按照此处所述删除 iplisten 条目。在这种情况下,IISExpress 似乎没有错误消息。
在尝试了一大堆东西之后。这解决了我的问题。谢谢@Jason J. Lee
p
poveilleux

我刚刚遇到了同样的问题,我杀死了所有仍在运行的“iisexpress.exe”进程。这对我有用!


S
Simon_Weaver

如果它正在工作并突然停止,请先尝试:

关闭 Visual Studio

杀死 iisexpress.exe 进程

重新打开 Visual Studio


g
goamn

一旦我在 applicationhost.config 中添加一个新的绑定,我的就会发生,以管理员身份运行解决了这个问题。


T
T-Jayanth Dore

只需关闭视觉工作室并重新打开并执行。它对我有用。


N
Numm3n

我的解决方案(对于 .net core 2.0)是我忘记在 applicationUrl 中添加端口号,在 launchSettings.json 的 iisExpress 下

"iisExpress": {
  "applicationUrl": "https://localhost:50770",
  "sslPort": 50770
}

launchSettings.json 由 VS 自动生成或更新时,applicationUrl 应该有 /。更多信息可在 blog.lextudio.com/… 中找到
K
Keenan Stewart

我能够通过重新启动计算机来解决此问题。我尝试了一些不成功的事情,最后放弃并重新启动了我的电脑。在我重新启动后,它已经运行了几天。可能是某个进程挂起的结果。


c
contactmatt

对我来说,这是以下 instructions 的混合:

删除您的 Web 应用程序的 .vs\applicationhost.config 并重试。

然后,也许最重要的是,以管理员权限运行 Visual Studio。


A
AFatBunny

我将 .UseUrls("https://localhost:<some port>/") 添加到 Program.cs。这似乎对我有用!


J
James Wilkins

问题可能是因为为您的项目选择了 [√] Enabled SSL(请参阅项目设置窗口中的 Debug 选项卡),但 Visual Studio 决定装傻并设置类似 http://localhost:32396 的东西。它失败的原因是因为 1. 它不是 HTTPS,以及 2. 证书无效。要强制它,您需要使用 44300-44398 范围内的端口。

请参阅https://stackoverflow.com/a/24957146/1236397