【问题标题】:ASP.NET Core or ASP.NET Core MVC solution fails to run, IIS Express throws HTTP Error 500.30 - ASP.NET Core app failed to startASP.NET Core 或 ASP.NET Core MVC 解决方案无法运行,IIS Express 抛出 HTTP 错误 500.30 - ASP.NET Core 应用程序无法启动
【发布时间】:2021-06-19 23:41:06
【问题描述】:

即使是 Visual Studio 中最简单的“Hello world”ASP.NET Core Web 应用程序,我也遇到过这个错误。 (Win 10 Pro、IIS Express、VS 2019 CE。)重现步骤:

  1. 在 Visual Studio 2019 中创建新的 ASP.NET Core 或 ASP.NET Core MVC 解决方案。选择选项以生成基本“hello world”应用的基架代码。无论您的目标是 .NET Core 2.1、.NET Core 3.1 还是 .NET 5.0,在我尝试的场景中结果都是一样的。

  2. 项目和解决方案已加载,源代码可见且看起来正确。按 F5 运行它。应用程序编译但不运行。

预期行为:“hello world”应用加载。

实际行为:在网络浏览器中显示此错误消息:

“HTTP 错误 500.30 - ASP.NET Core 应用程序无法启动”(以及一些 故障排除步骤,然后)“有关更多信息,请访问: https://go.microsoft.com/fwlink/?LinkID=2028265"。

  1. 继续并点击该链接,然后使用这些资源再次检查您是否拥有所有需要的包并且您的 IIS 配置正确。我的机器在我的机器上看起来都很好,但我仍然收到这个错误。我什至尝试重新安装 VS、托管包、IIS 等,但无济于事。

注意:此问题与“500.32 ANCM Failed To”略有不同 加载 DLL”或“500.36 ANCM 进程外处理程序加载失败” 错误,但我在故障排除过程中也遇到了这些错误,所以我 在此处提及它们以防对其他人有所帮助。

还请注意:您确实不一定有损坏的 ASP.NET Core this documentation 的模块会让你相信。

  1. 检查事件日志,您会在其中发现一些错误,但在这种情况下,这些错误对于诊断问题并没有特别的帮助。就我而言,它只是说

"应用程序 '/LM/W3SVC/2/ROOT' 与物理根目录 'H:\Repo (R;)\sandbox\AspNetCoreWebApp001\AspNetCoreWebApp001' 加载失败 coreclr.异常消息:CLR 工作线程提前退出”

"应用程序已从 Program.Main 退出,退出代码 = '-2147450743'。请查看 stderr 日志以获取更多信息。”

他们将 IIS Express AspNetCore 模块显示为源。供应商文档在这种情况下并没有太大帮助。

  1. 仔细检查以确保您的 IIS 配置正确,并且您安装了正确的包,包括 .NET Core Hosting Bundle。如果您不这样做,或者您在故障排除期间尝试了不同的配置,那么您可能会看到上面提到的 ANCM 错误。如果您遇到这些错误,这里有 two links 可以提供帮助。我多次阅读这些链接并仔细检查了我的机器。就我而言,这一切都是正确和完整的,但我仍然有错误。

  2. 再和电脑打架,骂它一些坏名字,第三次重新安装Visual Studio,第八次验证IIS设置,向你的朋友寻求帮助,再次检查SO和谷歌。简单的 hello world 应用程序仍然无法运行,同样的错误。它在另一台机器上运行,所以代码本身没有问题。

【问题讨论】:

  • 感谢您发布此内容,它可能对某人有用。我想知道如果帖子标题更明确是否会更好,例如“当解决方案路径包含分号时启动应用程序时出现 500.30 错误”?
  • 这里似乎也有同样的问题stackoverflow.com/questions/53811569/…
  • 我喜欢你的想法。起初我考虑过这样命名,但决定从我一直面临的问题着手。我的想法是这样做可能会帮助那些没有考虑过分号问题的人,比如我自己。发现它“只是”我的路径中的一个分号,而不是我不知道的一些新的 .NET Core 设置,真是令人抓狂。
  • 谢谢。 ANCM 进程失败错误是一个稍微不同的问题。我也遇到过这些,但只是在我重新安装东西时。我没有发现它们与分号问题有关。

标签: c# asp.net-mvc asp.net-core iis .net-core


【解决方案1】:

这是最终在我的机器上修复它的解决方案:我将解决方案移到了另一个文件夹。 嗯??? 如何我问,这可能解决这个问题吗?经过更多的努力,我最终找到了根本原因:路径中的分号。是的。就我而言,我一直将解决方案存储在一个名为“H:\Repo (R;)”的目录中。事实证明,即使 Windows 操作系统允许使用 ; 字符,.NET CLR 根本不喜欢它,也不知道如何处理它。因此它会生成无用的错误消息。

试试看。重命名“这应该可以工作”解决方案的文件夹以删除分号,在 VS 中关闭并重新打开解决方案,按 F5 并观察它运行。或者转到一个可行的解决方案并重命名文件夹以包含一个分号并观察它破坏 CLR。​​

我很好奇文件夹名称中的任何其他特殊字符是否会导致问题,因此我将它们全部检查(在文件夹上,而不是在文件名上,但我希望文件名也有类似的结果)。这是我的详尽测试:

Windows 不允许在文件夹名称中使用这些:

\/:*?"<>|

当路径包含以下任何特殊字符时,解决方案将加载并运行:

`~-_+=',.()[]{}!@#$%&

但是,在 Windows 允许的情况下,路径中包含这些字符中的任何一个都会导致 CLR 或 Visual Studio 出现问题:

; 导致“HTTP 错误 500.30 - ASP.NET Core 应用无法启动”

^ VS 无法加载解决方案并显示错误信息如下:

"在命令行中指定了以下文件:<.sln> 找不到这些文件,也不会加载。” 而是加载一个完全空的 VS 实例。

我还尝试在 VS 中的名称中包含分号的文件夹下创建一个新的“hello world”控制台应用程序,你猜怎么着?那也无法运行。尽管在这种情况下,显然 IIS 没有 HTTP 错误。相反,它说

“创建CoreCLR失败,HRESULT:0x80070057”

并抛出一个进程退出代码。再一次,这是路径中有分号的结果,因为从路径中删除该分号并在 VS 中重新加载解决方案可以使其正确运行。所以分号问题似乎来自 CLR,因此与 IIS 无关。

以下是一些有关根本原因的相关帖子,这对于在 IIS Express 上运行的 Web 应用程序来说并不明显:

Failed to create CoreCLR, HRESULT: 0x80070057

https://github.com/dotnet/sdk/issues/13954

因此,向那些在 RCA 中非常有帮助的帖子的作者致敬。

人们会认为操作系统允许的特殊字符也可以在 Visual Studio 代码的路径中使用。那好吧。经验教训。

【讨论】:

    猜你喜欢
    • 2021-12-13
    • 2021-09-11
    • 1970-01-01
    • 2021-07-16
    • 2023-01-09
    • 2022-10-01
    • 2021-12-08
    • 2021-05-23
    • 2018-06-02
    相关资源
    最近更新 更多