[ASP.NET Core開発実戦]基礎編01 Startup
5786 ワード
Startupは、その名の通り、ASPを構成するための起動クラスです.NET Coreアプリケーションのサービスとリクエストパイプ.
Startupには2つの主要な役割があります.アプリケーションのサービスは、コンフィギュレーションサービスによって構成される.サービスは、アプリケーション機能を提供する再利用可能なコンポーネントです. アプリケーションの要求処理パイプ(ミドルウェア)をコンフィギュレーション方法によって構成する. 以下はVS通過ASP.NET Coreプロジェクトテンプレートで生成されたStartupクラス.
ConfigureServicesメソッド:オプション. は、コンフィギュレーション・メソッドがアプリケーション・サービスを構成する前に、ホストによって呼び出される. では、構成オプションが一般的に設定されています. IServiceCollectionには、AddDbContext、AddDefaultIdentityなどのAdd{Services}形式で命名されたサービス拡張方法がたくさんあります.したがって,サービスをカスタマイズする際にも拡張メソッドをAdd{Services}で定義することが一般的である.
Configureメソッドは、アプリケーションがHTTPリクエストに応答する方法を指定するために使用されます.中間部品コンポーネントをIApplicationBuilderインスタンスに追加することで、要求パイプを構成できます.
ASP.NET Coreに内蔵されている配管は次のとおりです.開発者異常ページ 異常処理プログラム HTTP厳格伝送セキュリティ(HSTS) HTTPSリダイレクト ASP.NET Core MVCとRazor Pages
要求パイプ内の各ミドルウェアコンポーネントは、パイプ内の次のコンポーネントを呼び出すか、適切な場合にチェーンを短絡させる責任を負います.したがって、ミドルウェアを登録するときは、呼び出し順序に注意してください.そうしないと、意図的に予想外の状況が発生します.
IApplicationBuilderとミドルウェアの処理手順の詳細については、ASP.を参照してください.NET Coreミドルウェア.
Startupクラス構成サービスを使用しない場合は、ホストインスタンスの作成時にConfigureServicesメソッドとConfigureメソッドを呼び出す必要があります.次のようになります.
Startupには2つの主要な役割があります.
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
}
ConfigureServicesメソッド
ConfigureServicesメソッド:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity(
options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores();
services.AddRazorPages();
}
Configureメソッド
Configureメソッドは、アプリケーションがHTTPリクエストに応答する方法を指定するために使用されます.中間部品コンポーネントをIApplicationBuilderインスタンスに追加することで、要求パイプを構成できます.
ASP.NET Coreに内蔵されている配管は次のとおりです.
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
}
各Use拡張メソッドは、1つまたは複数のミドルウェアコンポーネントを要求パイプに追加します.したがって、カスタムミドルウェアコンポーネントもUseによって拡張メソッドを定義します.要求パイプ内の各ミドルウェアコンポーネントは、パイプ内の次のコンポーネントを呼び出すか、適切な場合にチェーンを短絡させる責任を負います.したがって、ミドルウェアを登録するときは、呼び出し順序に注意してください.そうしないと、意図的に予想外の状況が発生します.
IApplicationBuilderとミドルウェアの処理手順の詳細については、ASP.を参照してください.NET Coreミドルウェア.
Startupを使用せずにサービスを構成
Startupクラス構成サービスを使用しない場合は、ホストインスタンスの作成時にConfigureServicesメソッドとConfigureメソッドを呼び出す必要があります.次のようになります.
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureServices(services =>
{
services.AddControllersWithViews();
})
.Configure(app =>
{
var loggerFactory = app.ApplicationServices
.GetRequiredService();
var logger = loggerFactory.CreateLogger();
var env = app.ApplicationServices.GetRequiredService();
var config = app.ApplicationServices.GetRequiredService();
logger.LogInformation("Logged in Configure");
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
var configValue = config["MyConfigKey"];
});
});
});
}