Добавление 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");
эта строка там, но это было, как я получил его в Интернете, и я не знаю, как это изменить