Dotnet 5 worker runs kestrel server return empty response

Viewed 263

I am trying to create windows service using dotnet worker project that starts up rest-api, I am using kestrel server for this purpose:

using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Builder;

namespace TurkisisService
{
    public class Worker : BackgroundService
    {
        private readonly ILogger<Worker> _logger;

        public Worker(ILogger<Worker> logger)
        {
            _logger = logger;
            kestrelStarted=false;
        }

        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
                if(!kestrelStarted) {
                    kestrelStarted=true;
                    var host = new WebHostBuilder()
                    .UseKestrel()
                    .UseStartup<Startup>()
                    .Build();

                    var task = Task.Run(() => {
                        host.Run();
                    });
                }
                await Task.Delay(1000, stoppingToken);
            }
        }

        private bool kestrelStarted;
    }

    public class Startup {

        public void Configure(IApplicationBuilder app){
            app.Run(context => {
                
                return context.Response.WriteAsync("Hello world!");
            });
            
        }
    }

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

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureServices((hostContext, services) =>
                {
                    services.AddHostedService<Worker>();
                });
    }
}

I used these packages:

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

<PropertyGroup>
  <TargetFramework>net5.0</TargetFramework>
  <UserSecretsId>dotnet-turkisis_service-9216353E-18A1-49B4-8CAB-E939439FF992</UserSecretsId>
  <RootNamespace>turkisis_service</RootNamespace>
</PropertyGroup>

<ItemGroup>
  <PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
  <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="2.2.0" />
  <PackageReference Include="Microsoft.Extensions.Hosting" Version="5.0.0" />
</ItemGroup>

The console displays these lines of logs:

Now listening on: http://localhost:5000 Now listening on: https://localhost:5001

but when I open the url on web browser: http://localhost:5000, also https://localhost:5001 returns empty, they are display: ERR_EMPTY_RESPONSE

0 Answers
Related