(1)ASP.NET Coreアプリケーション起動Startupクラス概要
6253 ワード
1.はじめに
Coreと旧バージョンのASP.NETと比較して、アプリケーションを構成する方式のGlobal.asax、FilterConfig.csとRouteConfig.csはProgramによってcsとStartup.csが取って代わった.Program.csはWebアプリケーションのデフォルトのエントリとして、何の変更もない場合、同ディレクトリのStartupを呼び出す.csのConfigureServicesメソッドとConfigureメソッド.
2.Startupクラス
Startupクラスは、サービスとアプリケーションのリクエストパイプを構成します.Program.Mainメソッドはアプリケーションの管理ポータルです.アプリケーションのホスト(WebHost)を構築する際、システムはアプリケーションにStartupクラスを指定し、Mainエントリがホストジェネレータ(IWebHostBuilder)を介してBuildを呼び出すと、対応するアプリケーションのホスト(WebHost)が生成され、実行(Run)が開始される.
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup();
}
2.1アプリケーション起動時にStartupクラスを呼び出す
アプリケーションが起動すると、実行時にStartupクラスのConfigureServicesメソッドとConfigureメソッドが呼び出されます.
public class Startup
{
// Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
...
}
// Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app)
{
...
}
}
Startupクラスでは、Configureメソッドを定義する必要がありますが、アプリケーションの起動時に呼び出されるConfigureServicesメソッドの定義を選択できます.次に、この2つの方法を理解します.
3.configureServicesメソッド
アプリケーションに必要なサービスを設定します.・この方法は、定義または非定義を選択することができる.・コンフィギュレーション・メソッドがアプリケーション・サービスを構成する前に、ホスト(WebHost)によって呼び出される.・構成オプション(appsettings.json)を通常通りに設定します.多くの設定が必要な機能の場合、IServiceCollectionにはAdd{Services}拡張メソッドがあります.典型的なASP.NET Coreアプリケーションは、エンティティーフレームワーク(Entity Framework)、ID(Identity)、MVC登録サービスを提供します.
public void ConfigureServices(IServiceCollection services)
{
// Entity Framework
services.AddDbContext(options =>
options.UseSqlServer(
_Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity()
.AddDefaultUI(UIFramework.Bootstrap4)
.AddEntityFrameworkStores();
// MVC .
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
// .
services.AddTransient();
services.AddTransient();
}
サービスコンテナにサービスを追加し、アプリケーションおよびConfigureメソッドで使用できるようにします.サービスは依存関係注入(DI)またはApplicationServicesによって解析される.
4.Configureメソッド
アプリケーションがHTTPリクエストに応答する方法を指定します.要求パイピングは、MiddlewareコンポーネントをIApplicationBuilderインスタンスに追加することによって構成できます.ConfigureメソッドはIApplicationBuilderを使用できますが、サービスコンテナに登録されていません.管理者はIApplicationBuilderを作成し、Configureに直接渡します.一般的に、ConfigureメソッドはASPを指定するために使用される.NETアプリケーションが各HTTPリクエストにどのように応答するかは、各リクエストが同じレスポンスを受けるように構成できます.より複雑なパイプ構成は、ミドルウェアにカプセル化され、拡張方法でIApplicationBuilderに追加されます.Configureメソッドは、IApplicationBuilderパラメータを受け入れる必要があります.
4.1 ASP.NET Coreテンプレート構成の配管サポート:
●開発者異常ページ●異常処理プログラム●HTTP厳格伝送セキュリティ(HSTS)●HTTPSリダイレクト●スタティックファイル●一般データ保護条例(GDPR)●ASP.NET Core MVCとRazor Pages
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseMvc();
}
5.まとめ
・プログラムのMainメソッドWebHostサービスを作成し、起動クラスStartupを呼び出す.・Startupのコンフィギュレーションサービス方法は、IServiceCollectionサービスコンテナにサービスを注入するために使用される.・StartupのConfigureメソッドは、HTTP要求に応答し、中間部品をApplicationBuilderに登録して要求パイプを構成するために使用される.
参考文献:
ASP.NET Coreでのアプリケーション起動