Note
これは、この記事の最新バージョンではありません。 現在のリリースについては、 この記事の .NET 10 バージョンを参照してください。
Warning
このバージョンの ASP.NET Core はサポートされなくなりました。 詳細については、「.NET および .NET Core サポート ポリシー」を参照してください。 現在のリリースについては、 この記事の .NET 10 バージョンを参照してください。
この記事では、依存関係の挿入 (DI)、構成、ミドルウェアなど、ASP.NET Core アプリを構築するための基礎の概要について説明します。
この記事のガイダンスに追加または置き換わる Blazor の基礎ガイダンスについては、 ASP.NET Core Blazor の基礎を参照してください。
Program ファイル
フレームワークのプロジェクト テンプレートから作成されたアプリ ASP.NET Core、Program ファイル (Program.cs) にスタートアップ コードが含まれています。
Program ファイルは、次のような場所です。
- アプリで必要なサービスが構成されています。
- アプリの要求処理パイプラインは、一連の ミドルウェア コンポーネントとして定義されます。
次のアプリ スタートアップ コードでは、2 種類のアプリがサポートされています。
// Initialize a new instance of the WebApplicationBuilder class
// with preconfigured defaults
var builder = WebApplication.CreateBuilder(args);
// Add services for Blazor (Razor components)
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
// Build the app
var app = builder.Build();
// Use exception-handling middleware and HSTS middleware
// when in the Development environment
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseStatusCodePagesWithReExecute("/not-found", createScopeForStatusCodePages: true);
// Use HTTPS redirection middleware to automatically
// redirect requests from HTTP to HTTPS
app.UseHttpsRedirection();
// Map static assets endpoints
app.MapStaticAssets();
// Map a Minimal API endpoint for requests to '/hi'
app.MapGet("/hi", () => "Hello!");
// Add endpoints for Blazor
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode();
// Run the app
app.Run();
Note
Program ファイルの追加の構成により、ASP.NET Core アプリはコントローラーを使用して Razor Pages、MVC、Web API をサポートできます。
次のアプリ スタートアップ コードでは、2 種類のアプリがサポートされています。
// Initialize a new instance of the WebApplicationBuilder class
// with preconfigured defaults
var builder = WebApplication.CreateBuilder(args);
// Add services for Blazor (Razor components)
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
// Build the app
var app = builder.Build();
// Use exception-handling middleware and HSTS middleware
// when in the Development environment
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseStatusCodePagesWithReExecute("/not-found", createScopeForStatusCodePages: true);
// Use HTTPS redirection middleware to automatically
// redirect requests from HTTP to HTTPS
app.UseHttpsRedirection();
// Add antiforgery middleware
app.UseAntiforgery();
// Map static assets endpoints
app.MapStaticAssets();
// Map a Minimal API endpoint for requests to '/hi'
app.MapGet("/hi", () => "Hello!");
// Add endpoints for Blazor
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode();
// Run the app
app.Run();
Note
Program ファイルの追加の構成により、ASP.NET Core アプリはコントローラーを使用して Razor Pages、MVC、Web API をサポートできます。
次のアプリ スタートアップ コードでは、いくつかの種類のアプリがサポートされています。
// Initialize a new instance of the WebApplicationBuilder class
// with preconfigured defaults
var builder = WebApplication.CreateBuilder(args);
// Add services for Blazor (Razor components), Razor Pages, and MVC
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();
// Build the app
var app = builder.Build();
// Configure the HTTP request pipeline
// Use exception-handling middleware and HSTS middleware
// when in the Development environment
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
// Use HTTPS redirection middleware to automatically
// redirect requests from HTTP to HTTPS
app.UseHttpsRedirection();
// Use static files middleware to serve static assets
app.UseStaticFiles();
// Use authorization middleware
app.UseAuthorization();
// Add antiforgery middleware
app.UseAntiforgery();
// Map a Minimal API endpoint for requests to '/hi'
app.MapGet("/hi", () => "Hello!");
// Configures the standard conventional route for MVC
app.MapDefaultControllerRoute();
// Add endpoints for Razor Pages
app.MapRazorPages();
// Add endpoints for Blazor
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode();
// Run the app
app.Run();
以下をサポートするアプリ スタートアップ コードを示します。
// Initialize a new instance of the WebApplicationBuilder class
// with preconfigured defaults
var builder = WebApplication.CreateBuilder(args);
// Add services for Razor Pages and MVC
builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();
// Build the app
var app = builder.Build();
// Configure the HTTP request pipeline
// Use exception-handling middleware and HSTS middleware
// when in the Development environment
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
// Use HTTPS redirection middleware to automatically
// redirect requests from HTTP to HTTPS
app.UseHttpsRedirection();
// Use static files middleware to serve static assets
app.UseStaticFiles();
// Use authorization middleware
app.UseAuthorization();
// Map a Minimal API endpoint for requests to '/hi'
app.MapGet("/hi", () => "Hello!");
// Configures the standard conventional route for MVC
app.MapDefaultControllerRoute();
// Add endpoints for Razor Pages
app.MapRazorPages();
// Run the app
app.Run();
Startup クラス
Startup クラス (Startup.cs) は次のとおりです。
- アプリに必要なサービスは、
ConfigureServicesメソッドで構成されます。 - アプリの要求処理パイプラインは、
Configureメソッドで一連の ミドルウェア コンポーネントとして定義されます。
以下をサポートするアプリ スタートアップ コードを示します。
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));
services.AddControllersWithViews();
services.AddRazorPages();
}
public void Configure(IApplicationBuilder app)
{
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapDefaultControllerRoute();
endpoints.MapRazorPages();
});
}
}
詳細については、「ASP.NET Coreでのアプリの起動」と「ASP.NET Core Blazorスタートアップ」を参照してください。
依存性の注入 (サービス)
ASP.NET Core組み込みの依存関係の挿入 (DI) 機能により、構成済みのサービスを制御の反転 (IoC) アプリ全体で使用できるようになります。
WebApplication.CreateBuilderを呼び出してWebApplicationBuilderがインスタンス化されると、構成とログ記録のサービスなど、フレームワークによって提供されるサービスが自動的に追加されます。
var builder = WebApplication.CreateBuilder(args);
WebApplicationBuilder.Servicesを使用して、追加のサービスが DI コンテナーに追加されます。 次の例では、 Blazor サービスを登録します。
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
builder.Services.AddServerSideBlazor();
DI フレームワークは、要求されたサービスのインスタンスを実行時に提供します。
Blazor アプリでは、サービスは多くの場合、.razor ファイル (@inject) 内で Razor ディレクティブを使用して、実行時に DI から取得されます。 次の例では、コンポーネントは NavigationManager 抽象化を使用してナビゲーション マネージャーのインスタンスを取得します。このインスタンスは、URI ナビゲーションのクエリと管理に使用され、ボタンが選択されたときに /products 製品のページにユーザーを移動します。
@inject NavigationManager Navigation
<button @onclick="NavigateToProductList">
Products
</button>
@code {
private void NavigateToProductList()
{
Navigation.NavigateTo("/products");
}
}
DI からサービスを解決するもう 1 つの方法は、コンストラクターの挿入を使用することです。 次の例では、 プライマリ コンストラクター (C# 12 以降) は、 AppDbContext 型と ILogger<OrderProcessor> 型のパラメーターを受け取り、実行時に context 変数と logger 変数 (データベースのインスタンスとログ抽象化) に解決します。 データベース コンテキスト インスタンスは、 IsProcessed フィールドがデータベースに false されているすべての注文を処理するために使用され、処理された各注文は、ロガー インスタンスを使用して注文 ID (OrderId) を持つ情報としてログに記録されます。
public class OrderProcessor(AppDbContext context, ILogger<OrderProcessor> logger)
{
public async Task ProcessPendingOrdersAsync()
{
var orders = await context.Orders
.Where(o => !o.IsProcessed)
.ToListAsync();
foreach (var order in orders)
{
order.IsProcessed = true;
logger.LogInformation("Processed order ID {OrderId}.", order.Id);
}
await context.SaveChangesAsync();
}
}
最小 API エンドポイントのラムダ パラメーターに依存関係を直接挿入することもできます。 次の例では、 /todos エンドポイントから todo 項目の一覧が返されます。
ILogger<Program> 用のロガー インスタンスは情報をログに記録し、AppDbContext 用のデータベース インスタンスは、応答で返す todo 項目の一覧をデータベースから取得するために使用されます。
app.MapGet("/todos", async (AppDbContext context, ILogger<Program> logger) =>
{
logger.LogInformation("Fetching todos using inline handler injection.");
var todos = await context.Todos.ToListAsync();
return Results.Ok(todos);
});
Program ファイルでHost.CreateDefaultBuilderが呼び出されると、HostBuilder クラスの新しいインスタンスが、構成やログ記録用のサービスなどのフレームワークによって提供されるサービスで自動的に初期化されます。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
追加のサービスは、Startup.ConfigureServices メソッド (Startup.cs) の DI コンテナーのサービス コレクション (IServiceCollection) に追加されます。 次の例では、MVC サービスと Razor Pages サービスを登録します。
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddRazorPages();
}
サービスは通常、コンストラクター挿入を使用して DI から解決されます。 コンストラクター挿入では、必要な型またはインターフェイスのコンストラクター パラメーターがクラスで宣言されます。 DI フレームワークは、実行時にサービスのインスタンスを提供します。
組み込みの DI コンテナーがニーズを満たしていない場合は、代わりにサードパーティの IoC コンテナーを使用できます。
詳細については、「ASP.NET Coreでの依存関係の挿入」と「依存関係の挿入 ASP.NET Core Blazor」を参照してください。
Environments
実行環境は、次のような ASP.NET Coreで使用できます。
-
Development: アプリがローカル開発中の場合。 -
Staging: アプリがデプロイ用にステージングされたとき。 -
Production: ライブ アプリがユーザーに対して実行されている場合。
アプリが実行されているホストで ASPNETCORE_ENVIRONMENT 環境変数を設定して、アプリが実行されている環境を指定します。 ASP.NET Coreは、アプリの起動時に環境変数を読み取り、アプリの周りのコード実行を制御する値を格納します。
開発者コードでは、特定の環境を確認できます。 次の Program ファイルの例では、実行ブロック内のコードは、アプリが Development 環境で実行されていない場合にのみ実行されます。
if (!app.Environment.IsDevelopment())
{
...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (!env.IsDevelopment())
{
...
}
...
}
詳細については、BlazorおよびASP.NET Core 環境を参照してください。
Middleware
要求を処理するパイプラインは、一連のミドルウェア コンポーネントとして構成されています。 各コンポーネントによって、HttpContext に対して操作が実行され、パイプラインの次のミドルウェアが呼び出されるか、または要求が終了されます。
慣例により、ミドルウェア コンポーネントは、"Use" で始まる拡張メソッドを呼び出すことによってパイプラインに追加されます。要求処理パイプラインの一部を表す次の例では、例外処理 (UseExceptionHandler)、 HTTP Strict Transport Security (HSTS) プロトコル (UseHsts)、および HTTPS リダイレクト (UseHttpsRedirection) のミドルウェアが呼び出されます。 2 つのミドルウェアは、アプリがデプロイ (Staging環境) または運用環境 (Production 環境) 用にステージングされている場合など、アプリがDevelopment環境でローカル開発されていない場合にのみトリガーされます。
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error", createScopeForErrors: true);
app.UseHsts();
}
app.UseHttpsRedirection();
if (env.IsDevelopment())
{
...
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
ASP.NET Core には、豊富な組み込みミドルウェアのセットが含まれています。 カスタム ミドルウェア コンポーネントを作成して、アプリの特別な要求処理仕様を満たすこともできます。 詳細については、ミドルウェア ASP.NET Core参照してください。
Host
起動時に、ASP.NET Core アプリによって ホストがビルドされます。 ホストにより、次のようなアプリのすべてのリソースがカプセル化されます。
- HTTP サーバーの実装
- ミドルウェア コンポーネント
- Logging
- 依存性の注入 (DI) サービス
- Configuration
ASP.NET Core アプリを実行できる次の 3 つの異なるホストがあります。
- ASP.NET Core WebApplication (最小ホストとも呼ばれます)
- .NET 汎用ホスト
- ASP.NET Core WebHost
ASP.NET Core WebApplicationとWebApplicationBuilderの種類が推奨され、すべての ASP.NET Core プロジェクト テンプレートで使用されます。
WebApplication は.NET 汎用ホストと同様に動作し、同じインターフェイスの多くを公開しますが、構成に必要なコールバックは少なくなります。 ASP.NET Core WebHostは下位互換性のためにのみ使用できます。
次の例では、 WebApplication をインスタンス化し、 appという名前の変数に割り当てます。
var builder = WebApplication.CreateBuilder(args);
...
var app = builder.Build();
WebApplicationBuilder.Buildメソッドは、次のような一連の既定のオプションを使用してホストを構成します。
次の 2 つのホストがあります。
- .NET 汎用ホスト
- ASP.NET Core WebHost
.NET での汎用ホストをお勧めします。 ASP.NET Core Web ホストは、下位互換性のためにのみ使用できます。
次の例の CreateDefaultBuilder メソッドと ConfigureWebHostDefaults メソッドは、次のような一連の既定のオプションを使用してホストを構成します。
- Kestrelを Web サーバーとして使用し、IIS 統合を有効にする。
- アプリ設定ファイル (
appsettings.jsonなど)、環境変数、コマンド ライン引数、およびその他の構成ソースからの構成の読み込み。 - ログ記録を設定し、ログ出力をコンソールに転送し、ログ プロバイダーをデバッグします。
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
詳細については、次のリソースを参照してください。
- ASP.NET Core での .NET Generic Host (推奨)
- ASP.NET Core Web ホスト (下位互換性のため)
Web 以外のシナリオ
汎用ホストを使用すると、ログ記録、依存関係の挿入 (DI)、構成、アプリの有効期間管理など、他の種類のアプリでクロスカット フレームワーク拡張機能を使用できます。 詳細については、「ASP.NET Core の .NET 汎用ホスト」および「ASP.NET Core でホステッド サービスを使用するバックグラウンド タスク」を参照してください。
Servers
ASP.NET Core アプリは、HTTP 要求をリッスンするために HTTP サーバー実装を使用します。 サーバーは、アプリに対する要求を、に構成された一連のHttpContextとして表示します。
詳細については、「ASP.NET Core での Web サーバーの実装」を参照してください。
ウィンドウズ
ASP.NET Core では、次のサーバー実装が提供されます。
- Kestrelは、クロスプラットフォームの Web サーバーです。 Kestrel は、多くの場合、 IIS を使用してリバース プロキシ構成で実行されます。 Kestrel は、ASP.NET Core 2.0 以降で、インターネットに直接公開される一般向けエッジ サーバーとして実行することもできます。
- IIS HTTP サーバーは、IIS を使用する Windows のサーバーです。 このサーバーでは、ASP.NET Core アプリと IIS が同じプロセスで実行されます。
- HTTP.sys は、IIS で使用されていない Windows 用のサーバーです。
macOS と Linux
ASP.NET Core により、Kestrel クロスプラットフォーム サーバーの実装が提供されます。 Kestrel は、ASP.NET Core 2.0 以降で、インターネットに直接公開される一般向けエッジ サーバーとして実行することもできます。 Kestrel は、多くの場合、 Nginx または Apache を使用したリバース プロキシ構成で実行されます。
Configuration
ASP.NET Coreは、順序付けされた構成プロバイダーのセットから名前と値のペアとして設定を取得する構成フレームワークを提供します。 組み込みの構成プロバイダーは、JSON ファイル (.json)、XML ファイル (.xml)、環境変数、コマンド ライン引数など、さまざまなソースで使用できます。 他のソースをサポートするカスタム構成プロバイダーを作成できます。
既定では、ASP.NET Core アプリは、アプリ設定ファイル (たとえば、appsettings.json)、環境変数、およびコマンド ラインから読み取るために構成されます。
アプリの構成が読み込まれると、環境変数の値がアプリ設定ファイルの値をオーバーライドします。 Options API は、関連する構成値を読み取る際に使用できます。
Development環境でパスワードなどの機密構成データを管理するために、.NET にはシークレット マネージャーが用意されています。 運用シークレットの場合は、Azure Key Vaultを使用することをお勧めします。
詳細については、次のリソースを参照してください。
Logging
ASP.NET Coreでは、さまざまなログ プロバイダーで動作するログ記録 API がサポートされています。
- Console
- Debug
- Windows でのイベント トレース
- Windows イベント ログ
- TraceSource
- Azure App Service
- Azure アプリケーション Insights
- サード パーティ プロバイダー
ログを作成するには、依存性の注入 (DI) から LogInformation サービスを解決し、ILogger<TCategoryName> などのログ記録メソッドを呼び出します。 ロガー オブジェクトとロガー オブジェクトのコンソール プロバイダーは、 WebApplication.CreateBuilder メソッドが呼び出されると、DI コンテナーに自動的に格納されます。
次の例は、DI からログ インスタンスを取得し、気象データを報告するBlazor アプリのWeather コンポーネント (Weather.razor) で使用する方法を示しています。
@inject ILogger<Weather> Logger
...
@code {
protected override async Task OnInitializedAsync()
{
Logger.LogInformation("OnInitializedAsync method called!");
...
}
}
Razor Pages と MVC アプリのルーティング ガイダンスなど、詳細については、Blazor と ASP.NET Core のログ記録 を参照してください。
Routing
ASP.NET Coreでのルーティングは、受信要求をアプリ内の特定のエンドポイントにマップするメカニズムです。 これにより、 Razor コンポーネント、 Razor ページ、MVC コントローラー アクション、ミドルウェアなど、さまざまなコンポーネントに対応する URL パターンを定義できます。
UseRoutingメソッドは、要求パイプラインにルーティング ミドルウェアを追加します。 このミドルウェアは、ルーティング情報を処理し、要求ごとに適切なエンドポイントを決定します。
最小ホストを使用するアプリでは、ミドルウェアの処理順序を変更しない限り、UseRoutingは開発者コードで明示的に呼び出されません。
詳細については、次のリソースを参照してください。
ASP.NET Core - ASP.NET Core Blazor ルーティング
- ASP.NET Core Blazor ナビゲーション
エラーを処理する
ASP.NET Core には、次などのエラー処理用の機能が組み込まれています。
- 開発者例外ページ
- カスタム エラー ページ
- 静的状態コード ページ
- 起動時の例外処理
詳細については、「ASP.NET Coreでのエラーの処理」および「ASP.NET Core Blazor アプリでのエラーの処理」を参照してください。
HTTP 要求を行う
IHttpClientFactory インスタンスの作成に、HttpClient の実装を使用できます。 ファクトリは次のことを行います。
- 論理
HttpClientインスタンスの名前付けと構成を一元化します。 たとえば、Web API を使用してアプリのデータ要求の大部分を既定のクライアントに依存し、GitHubにアクセスするために構成された別のクライアントを登録します。 - 複数のデリゲート ハンドラーを登録してチェーン化し、送信要求ミドルウェア パイプラインを構築するのをサポートしています。 このパターンは、ASP.NET Core の受信ミドルウェア パイプラインに似ています。 このパターンでは、キャッシュ、エラー処理、シリアル化、ログ記録など、HTTP 要求に関する横断的関心事を管理するためのメカニズムが提供されます。
- 一時的な障害処理用の一般的なサード パーティ製ライブラリである Polly と統合されます。
- 基になっている HttpClientHandler インスタンスのプールと有効期間を管理し、
HttpClientの有効期間を手動で管理するときに発生する一般的な DNS の問題を防ぎます。 - ファクトリによって作成されたクライアントから送信されるすべての要求に対し、構成可能なログ エクスペリエンスを ILogger を介して追加します。
詳細については、「IHttpClientFactory を使用した HTTP 要求 - ASP.NET Core」および「ASP.NET Core Blazor アプリからの Web API の呼び出し」を参照してください。
コンテンツ ルート
コンテンツ ルートは、以下に対する基本パスです。
- アプリをホストしている実行可能ファイル (
.exe)。 - アプリを構成するコンパイル済みアセンブリ (
.dll)。 -
Razor ファイル (
.cshtml、.razor)、構成ファイル (.json、.xml)、データ ファイル (.db) など、アプリによって使用されるコンテンツ ファイル。 -
Web ルート。これは通常、
wwwrootフォルダーです。
開発中、コンテンツ ルートの既定値は、プロジェクトのルート ディレクトリです。 このディレクトリは、アプリのコンテンツ ファイルと Web ルートの両方のベース パスでもあります。 ホストのビルド時にパスを設定して、別のコンテンツ ルートを指定 します。
詳細については、「ASP.NET Core の汎用ホスト.NET」および「ASP.NET Core アプリの静的ファイルを提供する」を参照してください。
ウェブルート
Web ルートは、スタイルシート、JavaScript ファイル、イメージなどのパブリックな静的リソース ファイルの基本パスです。
既定では、静的ファイルは Web ルート ディレクトリとそのサブディレクトリからのみ提供されます。 Web ルート パスの既定値は {CONTENT ROOT}/wwwroot で、 {CONTENT ROOT} プレースホルダーはコンテンツ ルートです。
ホストを構築するときは、それ自体のパスを設定して別の Web ルートを指定します。 また、アプリのプロジェクト ファイル内の<Content> プロジェクト項目を使用して、wwwroot内のファイルを発行しないようにすることもできます。
Razor
.cshtml ファイルの場合、~/ が Web ルートを指します。
~/で始まるパスは、仮想パスと呼ばれます。
詳細については、「ASP.NET Core の汎用ホスト.NET」および「ASP.NET Core アプリの静的ファイルを提供する」を参照してください。
サンプルをダウンロードする方法
多くの記事やチュートリアルにサンプル コードへのリンクが含まれています。
- ASP.NET リポジトリの zip ファイルをダウンロードします。
-
AspNetCore.Docs-main.zipファイルを解凍します。 - 解凍されたリポジトリ内の記事のサンプルにアクセスするには、記事のサンプル リンクの URL を使用して、サンプルのフォルダーに移動します。 通常、記事のサンプル リンクが記事の上部に表示され、リンク テキスト が表示されるか、サンプル コードがダウンロードされます。
1 つのサンプル アプリとその最後のコミットのみを取得するには、 git sparse-checkoutを使用します。
リポジトリGitHubBlazorサンプルの次の例では、git sparse-checkout set コマンドはサンプル フォルダーへのパスを指定します。
-
{VERSION FOLDER}プレースホルダーをバージョン フォルダーに置き換えます。 -
{SAMPLE FOLDER}プレースホルダーをサンプル フォルダーに置き換えます。
コマンド シェルで、サンプルを複製するフォルダーに移動します。
git sparse-checkout set コマンドに version/sample フォルダー パスを渡して、コマンド シェルで次のコマンドを実行します。
git clone --depth 1 --filter=blob:none https://github.com/dotnet/blazor-samples.git --sparse
cd blazor-samples
git sparse-checkout init --cone
git sparse-checkout set {VERSION FOLDER}/{SAMPLE FOLDER}
次の PowerShell の例では、10.0 Blazor Web App サンプルを取得し、変更ディレクトリ (cd) コマンドの PowerShell の~/documents パスを使用してユーザーのドキュメント フォルダーに配置します。
cd "~/documents"
git clone --depth 1 --filter=blob:none https://github.com/dotnet/blazor-samples.git --sparse
cd blazor-samples
git sparse-checkout init --cone
git sparse-checkout set 10.0/BlazorSample_BlazorWebApp
サンプル コードのプリプロセッサ ディレクティブ
複数のシナリオを示すため、サンプル アプリでは #define と #if-#else/#elif-#endif のプリプロセッサ ディレクティブを使用してさまざまなサンプル コードのセクションを選択してコンパイルし、実行します。 このアプローチを活用するサンプルでは、C# ファイルの上部にある #define ディレクティブを設定して、実行するシナリオに関連付けられたシンボルを定義します。 一部のサンプルでは、シナリオを実行するために複数のファイルの上部でシンボルを定義する必要があります。
たとえば、次の #define のシンボル一覧は、4 つのシナリオが使用可能である (シンボルごとに 1 つのシナリオ) ことを示しています。 現在のサンプル構成では TemplateCode のシナリオが実行されます。
#define TemplateCode // or LogFromMain or ExpandDefault or FilterInCode
ExpandDefault のシナリオを実行するサンプルを変更するには、ExpandDefault のシンボルを定義し、残りのシンボルをコメント アウトしたままにします。
#define ExpandDefault // TemplateCode or LogFromMain or FilterInCode
C# プリプロセッサ ディレクティブを使用してコードのセクションを選択的にコンパイルする方法の詳細については、#define (C# リファレンス) と #if (C# リファレンス) を参照してください。
サンプル コードのリージョン
一部のサンプル アプリには、#region および #endregion C# ディレクティブで囲まれたコードのセクションが含まれています。 ドキュメント ビルド システムでは、これらの領域がレンダリングされたドキュメント トピックに挿入されます。
通常、リージョン名には "snippet" という単語が含まれます。次の例は、 snippet_WebHostDefaultsという名前のリージョンを示しています。
#region snippet_WebHostDefaults
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
#endregion
上記の C# コード スニペットは、トピックの markdown ファイルで次の行で参照されています。
[!code-csharp[](sample/SampleApp/Program.cs?name=snippet_WebHostDefaults)]
コードを囲む #region ディレクティブと #endregion ディレクティブは無視して削除しても問題ありません。 このトピックで説明するサンプル シナリオを実行する予定の場合は、これらのディレクティブ内のコードを変更しないでください。
詳細については、「 ASP.NET ドキュメントへの投稿: コード スニペット」を参照してください。
ドキュメント オブジェクト モデル (DOM)
このドキュメント セット全体の ドキュメント オブジェクト モデル への参照では、省略形 DOM を使用します。
詳細については、「 DOM の概要 (MDN ドキュメント) 」および 「Level 1 Document Object Model Specification (W3C)」を参照してください。
バイト倍数
.NET のバイトサイズは、1024 の累乗に基づいたバイトの非10進数倍数に対してメトリック接頭辞を使用します。
| 名前 (略称) | サイズ | 例 |
|---|---|---|
| キロバイト (KB) | 1,024 バイト | 1 KB = 1,024 バイト |
| メガバイト (MB) | 1,0242 バイト | 1 MB = 1,048,576 バイト |
| ギガバイト (GB) | 1,0243 バイト | 1 GB = 1,073,741,824 バイト |
サポート リクエスト
dotnet/AspNetCore.Docs リポジトリには、ドキュメント関連のイシューのみが適しています。
製品のサポートの場合は、ドキュメントのイシューを開かないでください。 次のサポート チャネルの 1 つまたは複数でサポートを受けることができます:
-
ASP.NET Coreの Stack Overflow (タグ:
asp.net-core) -
Blazorの Stack Overflow (タグ:
blazor) - 一般ASP.NET Core Slack チーム
- Blazor Gitter
フレームワークまたは製品フィードバックの潜在的なバグについては、dotnet/aspnetcore の問題で ASP.NET Core製品ユニットの問題を開きます。 通常、バグ レポートには次のものが必要です。
- 問題の詳細な説明: 問題を開くときに、製品ユニットによって提供されるGitHub問題テンプレートの指示に従います。
- Minimal repro project: 製品ユニット エンジニアがダウンロードして実行できるように、プロジェクトをGitHubに配置します。 イシューの開始コメントにプロジェクトをクロスリンクします。
記事に問題の可能性がある場合は、ドキュメントの issue を作成してください。 ドキュメントの問題を開くには、記事の下部にある [ドキュメントの問題を開く] フィードバック リンクを使用します。 問題に追加されたメタデータにより、追跡データが提供され、記事の作成者に自動的に ping が送信されます。 ドキュメントの問題を開くまえに、その件について製品ユニットで説明されていた場合は、ドキュメントの問題の開始コメントに、エンジニアリング問題へのクロスリンクを付けておきます。
Blazor ドキュメントのGitHubの問題は、Blazor.Docs プロジェクト (dotnet/AspNetCore.Docs GitHub リポジトリ) でトリアージ用に自動的にマークされます。 応答があるまでしばらくお待ちください (特に週末や休日)。 通常、平日であればドキュメントの作成者が 24 時間以内に応答します。
Visual Studioに関する問題やフィードバックについては、report a Problem または Suggest a Feature ジェスチャをVisual Studio内から使用して、Visual Studioの内部問題を開きます。 詳細については、「Visual Studio フィードバックを参照してください。
Visual Studio Codeに関する問題については、コミュニティ サポート フォーラムでサポートを依頼してください。 バグ レポートと製品フィードバックについては、microsoft/vscode GitHub リポジトリで問題を開きます。
その他のリソース
ASP.NET Core