gpt4 book ai didi

iis - ASP.NET Core 无法在 IIS 下运行 : HTTP Error 500. 0 - ANCM In-Process Handler Load Failure

转载 作者:行者123 更新时间:2023-12-03 14:38:51 26 4
gpt4 key购买 nike

我刚刚将我的 Web 应用程序从 ASP.NET(框架)MVC 升级到 ASP.NET Core 2.2。该应用程序在 IIS Express 下运行良好,但是一旦我尝试在 IIS 下运行它,它就会出现一般错误:

HTTP Error 500.0 - ANCM In-Process Handler Load Failure Common causes of this issue: The specified version of Microsoft.NetCore.App or Microsoft.AspNetCore.App was not found. The in process request handler, Microsoft.AspNetCore.Server.IIS, was not referenced in the application. ANCM could not find dotnet.



我在网上搜索了一下,发现很多开发人员都遇到了同样的问题,看来微软真的错过了这个问题,并且让在 IIS 下开发 ASP.NET Core 应用程序变得尽可能痛苦。无论如何,我想突破过去 24 小时我一直在撞的这堵砖墙,所以可以使用一些帮助。

到目前为止我尝试过的事情:
  • 安装了最新版本的 .NET Core Runtime and Hosting Bundle,版本 2.2.4。
  • 安装了最新版本的 .NET Core SDK,版本 2.2.203。
  • 确保“dotnet”可从命令行运行,并且 x64 版本在我的环境变量中的 x86 版本之前。

  • C:\WINDOWS\system32>where dotnet C:\Program Files\dotnet\dotnet.exe C:\Program Files (x86)\dotnet\dotnet.exe


  • 尝试将我的自动生成的 Web.config 从 aspNetCore processPath="%LAUNCHER_PATH%"arguments="%LAUNCHER_ARGS%"更改为 aspNetCore processPath="dotnet"arguments="./Housters.Web.dll"但是更改不坚持,每次我构建我的 Web 应用程序时,Web.config 都会恢复到原来的 %LAUNCHER_PATH% 值。
  • 尝试在 Web.config 中将“AspNetCoreModuleV2”更改为“AspNetCoreModule”。
  • 向我的 Web.csproj 文件添加了 IsTransformWebConfigDisabled=true 以防止我的自定义 Web.config 被覆盖。它不起作用,Web.config 仍然被覆盖。
  • 尝试在我的 Web.csproj 文件中将 AspNetCoreHostingModel=InProcess 切换为 RuntimeFrameworkName=Microsoft.AspNetCore.App。
  • 清理解决方案,以及手动删除 bin、obj 甚至 .vs 文件夹。

  • 这些方法都没有帮助,我仍然收到相同的 ANCM In-Process Handler Load Failure 错误。事件查看器确实显示了一个更有用的错误:

    Application 'C:\Housters\Web\' wasn't able to start. Executable was not found at 'C:\Housters\Web\%LAUNCHER_PATH%.exe'



    但是,我对此无能为力,因为我的 Web.config 更改不会持续存在。但实际上,默认设置应该是开箱即用的,我们不应该为了让 IIS 开发工作而跳槽。当 ASP.NET Core 项目默认仅生成 .dll 时,为什么要查找 .exe?以及为什么不将 %LAUNCHER_PATH% 替换为正确的路径,例如“垃圾箱/调试”?

    编辑:我还应该提到,有时我已经能够让我的自定义 Web.config 保持不变,当我每次尝试运行 Web 应用程序时,我都会收到 JIT 调试器提示:

    enter image description here

    选择调试或查看事件日志只会给我一个非常不友好的错误消息:

    Faulting application name: w3wp.exe, version: 10.0.17134.1, time stamp: 0xed729d4e Faulting module name: KERNELBASE.dll, version: 10.0.17134.556, time stamp: 0xb9f4a0f1 Exception code: 0xc0020001 Fault offset: 0x000000000003a388 Faulting process id: 0x2650 Faulting application start time: 0x01d502b1f21b112e Faulting application path: c:\windows\system32\inetsrv\w3wp.exe Faulting module path: C:\WINDOWS\System32\KERNELBASE.dll Report Id: 5b5c14cb-8ffa-47b4-8cc1-42f951bc1256 Faulting package full name: Faulting package-relative application ID:

    最佳答案

    您收到此错误是因为您没有指定是希望网站托管在进程中还是进程外......可以使用 UseIIS() 指定进程中。

    尝试将 Program.cs 中的 CreateWebHostBuilder 方法更改为:

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) 
    {
    var env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
    var builder = WebHost.CreateDefaultBuilder(args);

    if (env == EnvironmentName.Staging || env == EnvironmentName.Production)
    builder.UseIIS();

    builder.UseStartup<Startup>();
    return builder;
    }

    我通过添加以下内容在我的 .pubxml 部署配置文件中设置 ASPNETCORE_ENVIRONMENT:
      <PropertyGroup>
    <EnvironmentName>Staging</EnvironmentName>
    </PropertyGroup>

    关于iis - ASP.NET Core 无法在 IIS 下运行 : HTTP Error 500. 0 - ANCM In-Process Handler Load Failure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55986071/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com