ASP.NET Coreが気軽にエントリーできるコンフィギュレーションでのIHostingEnvironmentとIApplicationLifetimeの使用

3585 ワード

StratUpでcsのConfigureメソッドでは、IApplicationBuilderと私の前の記事で述べたIconfigurationを除いて、よく使われるパラメータを除いてリンクを開きます.
ほかにも
IHostingEnvironmentとIApplicationLifetime
では、この2つのパラメータは何に使いますか.
まずASPを作りたいのですがNET Coreの空のアイテム
そしてスタートアップ.csでは、コンフィギュレーションメソッドにIHostingEnvironment envとIApplicationLifetimeアプリケーションLifetimeの2つのパラメータを加えます
  public void Configure(IApplicationBuilder app, IHostingEnvironment env,IApplicationLifetime applicationLifetime)
envがどのような方法を注文できるか見てみましょう
そうですね.基本的には、プログラム名情報、ルートディレクトリ、環境名などの基本情報を含むアプリケーションの環境情報が表示されます.プログラムを例に、プログラムのこれらの情報を出力してみましょう.
appを変更します.runのコード
 
                await context.Response.WriteAsync($"name=\"{env.ApplicationName}\"");
                await context.Response.WriteAsync($"name=\"{env.ContentRootFileProvider}\"");
                await context.Response.WriteAsync($"name=\"{env.ContentRootPath}\"");
                await context.Response.WriteAsync($"name=\"{env.EnvironmentName}\"");
                await context.Response.WriteAsync($"name=\"{env.WebRootFileProvider}\"");   //             
実行して、どのような内容が出力されているかを確認します.
だからIHostingEnvironmentはaspを保存したのですNetcoreプログラムの基本環境情報の.
 
IApplicationLifetimeこの方法は、アプリケーションのランタイムイベントをバインドするために使用されているので、Configureのコードを変更します.
 
  public void Configure(IApplicationBuilder app, IHostingEnvironment env,IConfiguration configuration,IApplicationLifetime applicationLifetime)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            applicationLifetime.ApplicationStarted.Register(() =>
            {
                Console.WriteLine("Strated");
            });
            applicationLifetime.ApplicationStopping.Register(() =>
            {
                Console.WriteLine("Stoping");
            });
            applicationLifetime.ApplicationStopped.Register(() =>
            {
                Console.WriteLine("Strated");
            });
            app.Run(async (context) =>
            {
                await context.Response.WriteAsync($"name=\"{env.ApplicationName}\"");
                await context.Response.WriteAsync($"name=\"{env.ContentRootFileProvider}\"");
                await context.Response.WriteAsync($"name=\"{env.ContentRootPath}\"");
                await context.Response.WriteAsync($"name=\"{env.EnvironmentName}\"");
                await context.Response.WriteAsync($"name=\"{env.WebRootFileProvider}\"");   //             
                //await context.Response.WriteAsync($"connectionString=\"{configuration["connectionString:defaultConnectionString"]}\"");
                //await context.Response.WriteAsync($"name=\"{configuration["name"]}\"");
                await context.Response.WriteAsync("Hello World!");
            });
        }

アプリケーションを再起動した後、停止中、停止後、コンソール出力イベントをそれぞれバインドし、出力結果を確認します.
再コンソールでそれぞれ再アプリケーションの起動後クローズ中クローズ後にコンテンツの出力が行われていることがわかるので,アプリケーションのランタイムイベントをバインドするためのIApplicationLifetimeの手法であると結論した.
 
このプロジェクトの完全なgithubコード:https://github.com/liuzhenyulive/WebHost
何か質問があれば、文章の下に伝言を残してください.