title: ANCM InProcess startup failed because of invalid runtimeconfig.json
body: <p>The application is deployed as an (32-bit, .NET Core 2.2) App Service on Azure. It works fine when using the standard <code>AspNetCoreModule</code> instead of the newer <code>AspNetCoreModuleV2</code> that supports the <code>InProcess</code> hostingmodel. </p>
  
  <p>When using the new <code>InProcess</code> hostingmodel, the actual error is</p>
  
  <blockquote>
    <p>Could not find inprocess request handler. Captured output from
    invoking hostfxr: Invalid runtimeconfig.json
    [D:\home\site\wwwroot\Foo.Api.runtimeconfig.json]
    [D:\home\site\wwwroot\Foo.Api.runtimeconfig.dev.json]</p>
  </blockquote>
  
  <p><strong>Foo.Api.runtimeconfig.json at wwwroot location</strong></p>
  
  <pre class="lang-json prettyprint-override"><code>{
    "runtimeOptions": {
      "tfm": "netcoreapp2.2",
      "framework": {
        "name": "Microsoft.AspNetCore.App",
        "version": "2.2.0"
      },
      "configProperties": {
        "System.GC.Server": true
      }
    }
  }
  </code></pre>
  
  <p><strong>Web.config</strong></p>
  
  <pre class="lang-xml prettyprint-override"><code>&lt;configuration&gt;
    &lt;location path="." inheritInChildApplications="false"&gt;
      &lt;system.webServer&gt;
        &lt;handlers&gt;
          &lt;add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /&gt;
        &lt;/handlers&gt;
        &lt;aspNetCore processPath="dotnet" arguments=".\Foo.Api.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="InProcess"&gt;
             &lt;handlerSettings&gt;
                 &lt;handlerSetting name="debugLevel" value="file" /&gt;
                 &lt;handlerSetting name="debugFile" value=".\logs\ancm.log" /&gt;
             &lt;/handlerSettings&gt;
        &lt;/aspNetCore&gt;
      &lt;/system.webServer&gt;
    &lt;/location&gt;
  &lt;/configuration&gt;
  </code></pre>
  
  <p><strong>ANCM logfile</strong></p>
  
  <pre class="lang-none prettyprint-override"><code>[aspnetcorev2.dll] Initializing logs for 'D:\Program Files (x86)\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll'. Process Id: 12324.. File Version: 12.2.18296.0. Description: IIS ASP.NET Core Module V2. Commit: 61f1a70784dc0a32cf98f8ddd169c0293b0390ab.
  [aspnetcorev2.dll] Detected app_offline file, creating polling application
  [aspnetcorev2.dll] Application went offline
  [aspnetcorev2.dll] Resolving hostfxr parameters for application: 'dotnet' arguments: '.\Foo.Api.dll' path: 'D:\home\site\wwwroot\'
  [aspnetcorev2.dll] Known dotnet.exe location: ''
  [aspnetcorev2.dll] Process path 'dotnet.exe' is dotnet, treating application as portable
  [aspnetcorev2.dll] Resolving absolute path to dotnet.exe from 'dotnet.exe'
  [aspnetcorev2.dll] Invoking where.exe to find dotnet.exe
  [aspnetcorev2.dll] where.exe invocation returned: 'D:\Program Files (x86)\dotnet\dotnet.exe
  D:\Program Files\dotnet\dotnet.exe
  '
  [aspnetcorev2.dll] Current process bitness type detected as isX64=0
  [aspnetcorev2.dll] Processing entry 'D:\Program Files (x86)\dotnet\dotnet.exe'
  [aspnetcorev2.dll] Binary type 0
  [aspnetcorev2.dll] Found dotnet.exe via where.exe invocation at 'D:\Program Files (x86)\dotnet\dotnet.exe'
  [aspnetcorev2.dll] Resolving absolute path to hostfxr.dll from 'D:\Program Files (x86)\dotnet\dotnet.exe'
  [aspnetcorev2.dll] hostfxr.dll located at 'D:\Program Files (x86)\dotnet\host\fxr\2.2.0\hostfxr.dll'
  [aspnetcorev2.dll] Converted argument '.\Foo.Api.dll' to 'D:\home\site\wwwroot\.\Foo.Api.dll'
  [aspnetcorev2.dll] Parsed hostfxr options: dotnet location: 'D:\Program Files (x86)\dotnet\dotnet.exe' hostfxr path: 'D:\Program Files (x86)\dotnet\host\fxr\2.2.0\hostfxr.dll' arguments:
  [aspnetcorev2.dll] Argument[0] = 'D:\Program Files (x86)\dotnet\dotnet.exe'
  [aspnetcorev2.dll] Argument[1] = 'D:\home\site\wwwroot\.\Foo.Api.dll'
  [aspnetcorev2.dll] Event Log: 'Invoking hostfxr to find the inprocess request handler failed without finding any native dependencies. This most likely means the app is misconfigured, please check the versions of Microsoft.NetCore.App and Microsoft.AspNetCore.App that are targeted by the application and are installed on the machine.' 
  End Event Log Message.
  [aspnetcorev2.dll] Failed HRESULT returned: 0x8000ffff at c:\b\w\e37dd45d8cd1eaf4\modules\iisintegration\src\aspnetcoremodulev2\aspnetcore\handlerresolver.cpp:80 
  [aspnetcorev2.dll] Event Log: 'Could not find inprocess request handler. Captured output from invoking hostfxr: Invalid runtimeconfig.json [D:\home\site\wwwroot\Foo.Api.runtimeconfig.json] [D:\home\site\wwwroot\Foo.Api.runtimeconfig.dev.json]
  ' 
  End Event Log Message.
  [aspnetcorev2.dll] Failed HRESULT returned: 0x8000ffff at c:\b\w\e37dd45d8cd1eaf4\modules\iisintegration\src\aspnetcoremodulev2\aspnetcore\handlerresolver.cpp:153 
  [aspnetcorev2.dll] Failed HRESULT returned: 0x8000ffff at c:\b\w\e37dd45d8cd1eaf4\modules\iisintegration\src\aspnetcoremodulev2\aspnetcore\applicationinfo.cpp:136 
  [aspnetcorev2.dll] Failed HRESULT returned: 0x8000ffff at c:\b\w\e37dd45d8cd1eaf4\modules\iisintegration\src\aspnetcoremodulev2\aspnetcore\applicationinfo.cpp:91 
  [aspnetcorev2.dll] Event Log: 'Failed to start application '/LM/W3SVC/1455123678/ROOT', ErrorCode '0x8000ffff'.' 
  End Event Log Message.
  [aspnetcorev2.dll] ASPNET_CORE_GLOBAL_MODULE::OnGlobalStopListening
  [aspnetcorev2.dll] Stopping application '/LM/W3SVC/1455123678/ROOT'
  [aspnetcorev2.dll] ASPNET_CORE_GLOBAL_MODULE::Terminate
  </code></pre>
  
  <p><strong>Server details using kudu</strong></p>
  
  <pre class="lang-none prettyprint-override"><code>dotnet --info
  .NET Core SDK (reflecting any global.json):
   Version:   2.2.100
   Commit:    51868761f2
  
  Runtime Environment:
   OS Name:     Windows
   OS Version:  10.0.14393
   OS Platform: Windows
   RID:         win10-x86
   Base Path:   D:\Program Files (x86)\dotnet\sdk\2.2.100\
  
  Host (useful for support):
    Version: 2.2.0
    Commit:  1249f08fed
  
  .NET Core SDKs installed:
    1.1.10 [D:\Program Files (x86)\dotnet\sdk]
    2.1.402 [D:\Program Files (x86)\dotnet\sdk]
    2.1.500 [D:\Program Files (x86)\dotnet\sdk]
    2.2.100 [D:\Program Files (x86)\dotnet\sdk]
  
  .NET Core runtimes installed:
    Microsoft.AspNetCore.All 2.1.4 [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.All]
    Microsoft.AspNetCore.All 2.1.6 [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.All]
    Microsoft.AspNetCore.All 2.2.0 [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.All]
    Microsoft.AspNetCore.App 2.1.4 [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App]
    Microsoft.AspNetCore.App 2.1.6 [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App]
    Microsoft.AspNetCore.App 2.2.0 [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App]
    Microsoft.NETCore.App 1.0.12 [D:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.NETCore.App 1.1.9 [D:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.NETCore.App 2.0.9 [D:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.NETCore.App 2.1.4 [D:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.NETCore.App 2.1.6 [D:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.NETCore.App 2.2.0 [D:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App]
  </code></pre>
  
  <p><strong>Program.cs</strong></p>
  
  <pre><code>using System;
  using System.Diagnostics.CodeAnalysis;
  using System.IO;
  using Foo.Dal;
  using Microsoft.AspNetCore;
  using Microsoft.AspNetCore.Hosting;
  using Microsoft.EntityFrameworkCore;
  using Microsoft.Extensions.Configuration;
  using Microsoft.Extensions.DependencyInjection;
  using Serilog;
  
  namespace Foo.Api
  {
      [ExcludeFromCodeCoverage]
      public class Program
      {
          public static IConfiguration Configuration { get; } = new ConfigurationBuilder()
              .SetBasePath(Directory.GetCurrentDirectory())
              .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
              .AddEnvironmentVariables()
              .Build();
  
          public static int Main(string[] args)
          {
              Log.Logger = new LoggerConfiguration()
                  .Enrich.FromLogContext()
                  .ReadFrom.Configuration(Configuration)
                  .WriteTo.Console()
                  .CreateLogger();
  
              try
              {
                  Log.Information("Starting web host");
                  CreateWebHostBuilder(args).Build().Migrate().Run();
                  return 0;
              }
              catch (Exception ex)
              {
                  Log.Fatal(ex, "Host terminated unexpectedly");
                  return 1;
              }
              finally
              {
                  Log.CloseAndFlush();
              }
          }
  
          public static IWebHostBuilder CreateWebHostBuilder(string[] args) =&gt;
              WebHost.CreateDefaultBuilder(args)
                  .UseStartup&lt;Startup&gt;()
                  .UseConfiguration(Configuration)
                  .UseSerilog();
  
  
      }
  
      public static class MigrationExtentions
      {
          public static IWebHost Migrate(this IWebHost webhost)
          {
              using (var scope = webhost.Services.GetService&lt;IServiceScopeFactory&gt;().CreateScope())
              {
                  using (var dbContext = scope.ServiceProvider.GetRequiredService&lt;MyContext&gt;())
                  {
                      dbContext.Database.Migrate();
                  }
              }
              return webhost;
          }
      }
  }
  </code></pre>
  
  <p><strong>csproj excerpt</strong></p>
  
  <pre class="lang-xml prettyprint-override"><code>&lt;PropertyGroup&gt;
      &lt;TargetFramework&gt;netcoreapp2.2&lt;/TargetFramework&gt;
      &lt;RuntimeFrameworkVersion&gt;2.2.0&lt;/RuntimeFrameworkVersion&gt;
      &lt;UserSecretsId&gt;717ec1cf-5ff6-4176-b96b-ee427f40bee5&lt;/UserSecretsId&gt;
      &lt;AssemblyName&gt;Bar.Foo.Api&lt;/AssemblyName&gt;
      &lt;AspNetCoreHostingModel&gt;InProcess&lt;/AspNetCoreHostingModel&gt;
  &lt;/PropertyGroup&gt;
  </code></pre>