Добавление web в консольное приложение ядра.net

Я имею.NET core console applicationгде я начинаю один процесс. Теперь я хочу добавить web page где я мог бы добавить результаты этого процесса.

это мое program.cs учебный класс

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

    public static IWebHost BuildWebHost(string[] args)
    {
        var config = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json", optional: true)
            .AddCommandLine(args)
            .Build();

        return WebHost.CreateDefaultBuilder(args)
            .UseKestrel()
            .UseUrls("http://localhost:5000")
            .UseConfiguration(config)
            .CaptureStartupErrors(true)
            .PreferHostingUrls(false)
            .Configure(app =>
            {
                IServiceCollection services = new ServiceCollection();
                Startup startup = new Startup();
                var serviceProvider = startup.ConfigureServices(services);
                IWindsorContainer container = serviceProvider.GetService<IWindsorContainer>();
                var configuration = container.Resolve<IConfigurationRoot>();
                var cron = configuration[Enums.ExecutionTime];
                var _logger = container.Resolve<IIBLogger>();
                _logger.LogInfo("Started application");
                RunIbit(cron);
            })
            .Build();
    }

    public static void RunIbit(string cron)
    {

    }

    public static async void Execute(string cron)
    {

    }
}

а это мой startup.cs учебный класс

public class Startup
{
    IConfigurationRoot Configuration { get; }

    public static readonly LoggerFactory MyLoggerFactory = new LoggerFactory();

    public Startup()
    {
        var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json");
        Configuration = builder.Build();
    }

    public IServiceProvider ConfigureServices(IServiceCollection services)
    {
        services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
        services.AddLogging();
        services.AddMvcCore();
        var serviceProvider = services.BuildServiceProvider();
        services.AddSingleton<IConfigurationRoot>(Configuration);

        return WindsorRegistrationHelper.CreateServiceProvider(ContainerManager.Container, services);
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseMvc();
    }
}

Однако веб-страница не открывается при запуске программы. И это показывает мне, что сайт localhosdt:5000 не может быть достигнуто Чего мне не хватает в моей программе, чтобы запустить ее через веб-интерфейс? Из примеров, на которые я смотрел, показалось, что все должно работать нормально, поэтому я не уверен, в чем проблема.

РЕДАКТИРОВАТЬ: мне удалось запустить сервер в веб-браузере, но потом я не могу запустить Process метод, так что он либо выполняет процесс или работает в Интернете, как мне удается сделать оба?

это мой код до сих пор:

static void Main(string[] args)
    {
        BuildWebHost(args).Run();
        RunIbit();
    }

    public static IWebHost BuildWebHost(string[] args)
    {
        var config = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json", optional: true)
            .AddCommandLine(args)
            .Build();

        var host = new WebHostBuilder()
            .UseKestrel()
            .UseStartup<Startup>()
            .UseConfiguration(config)
                .Configure(app =>
                {

                })
            .Build();
        return host;
        //return WebHost.CreateDefaultBuilder(args)
        //    .UseKestrel()
        //    .UseConfiguration(config)
        //    .Configure(app =>
        //    {
        //        IServiceCollection services = new ServiceCollection();
        //        Startup startup = new Startup();
        //        var serviceProvider = startup.ConfigureServices(services);
        //        IWindsorContainer container = serviceProvider.GetService<IWindsorContainer>();
        //        var configuration = container.Resolve<IConfigurationRoot>();
        //        var cron = configuration[Enums.ExecutionTime];
        //        var _logger = container.Resolve<IIBLogger>();
        //        _logger.LogInfo("Started application");
        //        RunIbit(cron);
        //    })
        //    .Build();
    }

в Startup.cs

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

    }

Я точно знаю, что мне не нужно return context.Response.WriteAsync("Hello world"); эта строка там, но это было, как я получил его в Интернете, и я не знаю, как это изменить

0 ответов

Другие вопросы по тегам