Возможно ли использовать консольное приложение 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
, который запустит веб-сервер.