Startup.csはASP.NET固有のもので、Webスタックであり、IISの背後にあるWebListenerまたはKestrelでホストされています。
コンソールアプリケーションでは、従来のStartup.csは使用しませんが、一貫性のあるベースを持つことはできますが、IoCコンテナの作成を制御しているためWebアプリケーションであなたのために行うASP.NETコア)。通常、Startup.csは、のWebHostBuilder
によって処理され、IServiceCollection
をConfigureServices
メソッドに渡す前に、自分自身のものを注入できるようにします。
あなたはコンソールアプリケーションが必要であり、そこにすべてのものを自分でやることが正しいです。
public class Program
{
public IConfigurationRoot Configuration { get; private set; }
public IServiceProvider Provider { get; private set; }
public static void Main()
{
var programm = new Programm();
program.Run();
}
private void Run()
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
var services = new ServiceCollection();
ConfigureServices(services);
this.Provider = services.BuildServiceProvider();
var host = this.Provider.GetRequiredService<MyHost>();
// blocking operation, the host should be something that keeps the service running
// once it stops, the application stops too as there are no additional
host.Run();
}
private void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IMyService, MyService>();
services.AddSingleton<MyHost>();
...
}
}
あなたがホストとして使いたいことは、あなた次第です。
using(var jobHost = new JobHost(new JobHostConfiguration(Configuration.GetConnectionString("AzureWebJobsDashboard"))))
{
jobHost.RunAndBlock();
}
開始し、アプリケーションの実行を継続し、Azureのメッセージと、その中に登録されたイベントを受け取るになるだろう:それはすなわち、Azureのウェブタスク/ホストである可能性があります。あるいは、Hangfireのような他のバックグラウンドタスクフレームワークを使用します。
ASP.NETコアでは、このすべてがフレームワークによって処理されますが、ASP.NETコアはWeb用に作られているため、エンドポイントによって異なります。 ASP.NETコアアプリケーションで使用されるStartup
クラスのConfigure
メソッド内のほとんどのものは、HttpContext
で動作するミドルウェアの登録についてです。エンドポイントなしでマイクロサービスにこれらを持っていません。終点なし、いいえHttpContext
、ミドルウェアは必要ありません。
もちろん、コンソールアプリケーションにはIApplicationBuilder
もありません。先に登録したサービスを解決するにはIServiceProvider
です。
偉大な、私はこれをショットと報告を返す – TalMcMahon