Возможно ли использовать консольное приложение ASP.NET 5-beta4 (построенное из шаблона проекта ASP.NET Console в VS2015) для использования класса Startup для обработки служб регистрации и настройки сведений о конфигурации?
Я попытался создать типичный класс Startup, но он никогда не вызывается при запуске консольного приложения через dnx . run или внутри Visual Studio 2015.
Startup.cs в значительной степени:
public class Startup
{
public Startup(IHostingEnvironment env)
{
Configuration configuration = new Configuration();
configuration.AddJsonFile("config.json");
configuration.AddJsonFile("config.{env.EnvironmentName.ToLower()}.json", optional: true);
configuration.AddEnvironmentVariables();
this.Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
services.Configure<Settings>(Configuration.GetSubKey("Settings"));
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<ApplicationContext>(options => options.UseSqlServer(this.Configuration["Data:DefaultConnection:ConnectionString"]));
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(minLevel: LogLevel.Warning);
}
}
Я попытался вручную создать класс Startup в моем методе Main, но это не похоже на правильное решение и до сих пор не позволяло мне настраивать службы.
Я предполагаю, что у меня есть способ создать HostingContext, который не запускает веб-сервер, но сохранит консольное приложение. Что-то вроде:
HostingContext context = new HostingContext()
{
ApplicationName = "AppName"
};
using (new HostingEngine().Start(context))
{
// console code
}
Однако пока единственный способ заставить это работать - установить HostingContext.ServerFactoryLocation на Microsoft.AspNet.Server.WebListener, который запустит веб-сервер.