一个由ASP.NET控制台项目模板在VS2015中构建的ASP.NET 5-beta4控制台应用程序是否可以使用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);
}
}
我尝试在我的Main
方法中手动创建Startup
类,但这似乎不是正确的解决方案,并且到目前为止还没有让我配置服务。我假设有一种方式可以创建一个
HostingContext
,它不会启动Web服务器,但会使控制台应用程序保持活动状态。类似于以下内容:HostingContext context = new HostingContext()
{
ApplicationName = "AppName"
};
using (new HostingEngine().Start(context))
{
// console code
}
然而到目前为止,我唯一能让它工作的方法是将 HostingContext.ServerFactoryLocation
设置为 Microsoft.AspNet.Server.WebListener
,这会启动 Web 服务器。