Routing no funciona con API web autohospedada

Esto es esencialmente lo que tengo, un conjunto muy simple de tres archivos con asp.net core 2.1 fresco (en realidad copiado de los tutoriales):

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();
}

Entonces va el inicio más simple

class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseMvc();
    }
}

Y el controlador de valores predeterminados

[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
    [HttpGet]
    public ActionResult<IEnumerable<string>> Get()
    {
        return new string[] { "value1", "value2" };,
    }
}

No importa cómo llame, veo en la consola el mismo error 404:

Application started. Press Ctrl+C to shut down.
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://localhost:5000/values
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 105.0181ms 404
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://localhost:5000/api/values
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 2.6016ms 404
etc

Intenté agregar la ruta predeterminada tanto conapp.UseMvcWithDefaultRoute(); y especificándolo manualmente. Intenté eliminar los atributos de ruta cuando usé la ruta predeterminada. También intenté agregarAddControllersAsServices(). Pero el resultado sigue siendo el mismo: 404. Cuando configuro el controlador personalizado enapp.Run entonces funciona sin ningún problema.

csproj (he reemplazado la dependencia predeterminada de Microsoft.AspNetCore.All, pero el enrutamiento aún no funciona)

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0" />
  </ItemGroup>

</Project>

Respuestas a la pregunta(3)

Su respuesta a la pregunta