ASP.NET Core无法在IIS下运行:HTTP错误500.0-ANCM进程内处理程序加载失败

时间:2019-05-04 19:24:55

标签: iis asp.net-core .net-core

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

  

HTTP错误500.0-ANCM进程内处理程序加载失败的常见原因   此问题的说明:Microsoft.NetCore.App的指定版本或   找不到Microsoft.AspNetCore.App。处理中的要求   处理程序Microsoft.AspNetCore.Server.IIS,未在   应用。 ANCM找不到dotnet。

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

到目前为止我已经尝试过的事情:

  • 安装了最新版本的.NET Core Runtime和Hosting Bundle,版本2.2.4。

  • 安装了最新版本的.NET Core SDK,版本为2.2.203。

  • 确保“ dotnet”可从命令行运行,并且在我的环境变量中x64版本早于x86版本。

  

C:\ WINDOWS \ system32>其中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进程内处理程序加载失败错误。事件查看器确实显示了一个更有用的错误:

  

应用程序“ C:\ Housters \ Web \”无法启动。可执行为   在“ C:\ Housters \ Web \%LAUNCHER_PATH%.exe”中找不到

但是,我对此无能为力,因为我的Web.config更改不会持续存在。但是,实际上,默认设置应该可以直接使用,我们不必为了使IIS开发正常工作而一而就。当ASP.NET Core项目默认情况下仅生成.dll时,为什么要查找.exe?又为什么不将%LAUNCHER_PATH%替换为正确的路径,例如“ bin / Debug”?

编辑:我还应该提到,有时我可以使自定义Web.config保留下来,然后当我每次尝试运行Web应用程序时都得到一个JIT调试器提示:

enter image description here

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

  

故障排除应用程序名称:w3wp.exe,版本:10.0.17134.1,时间   标记:0xed729d4e故障模块名称:KERNELBASE.dll,版本:   10.0.17134.556,时间戳记:0xb9f4a0f1异常代码:0xc0020001故障偏移量:0x000000000003a388故障进程ID:0x2650故障   应用程序开始时间:0x01d502b1f21b112e错误的应用程序路径:   c:\ windows \ system32 \ inetsrv \ w3wp.exe错误的模块路径:   C:\ WINDOWS \ System32 \ KERNELBASE.dll报告ID:   5b5c14cb-8ffa-47b4-8cc1-42f951bc1256故障包全名:   与程序包相关的应用程序ID错误:

1 个答案:

答案 0 :(得分:0)

您收到此错误,是因为未指定是要托管网站还是进行中...可以通过使用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>