アプリの起動
ヒント
このコンテンツは電子ブック、Azure の「ASP.NET Web Forms 開発者向け Blazor」からの抜粋です。これは .NET Docs から閲覧するか、オフラインで読める無料ダウンロードの PDF としても入手できます。
ASP.NET 用に記述されたアプリケーションには通常、HTML レンダリングと .NET 処理の両方で、どのサービスを構成して使用できるようにするかを制御する Application_Start
イベントを定義する global.asax.cs
ファイルがあります。 この章では、ASP.NET Core と Blazor Server との若干の違いについて説明します。
Application_Start と Web Forms
既定の Web フォームである Application_Start
メソッドは、多くの構成タスクに対応するために、長年にわたって拡張されています。 Visual Studio 2022 の既定のテンプレートを使用した新しい Web フォーム プロジェクトには、次の構成ロジックが含まれるようになりました。
RouteConfig
- アプリケーションの URL ルーティングBundleConfig
- CSS と JavaScript のバンドルと縮小
これらの各ファイルは App_Start
フォルダーに格納され、アプリケーションの開始時に 1 回だけ実行されます。 既定のプロジェクト テンプレートの RouteConfig
では、アプリケーションの URL がファイル拡張子 .ASPX
を省略できるように、Web フォーム用の FriendlyUrlSettings
が追加されます。 既定のテンプレートには、拡張子を省略したファイル名を持つフレンドリ URL に対して .ASPX
ページの永続的な HTTP リダイレクト ステータス コード (HTTP 301) を提供するディレクティブも含まれています。
ASP.NET Core および Blazor では、これらのメソッドは単純化されて Startup
クラスに統合されるか、一般的な Web テクノロジを優先して除去されます。
Blazor Server の Startup の構造
Blazor Server アプリケーションは、ASP.NET Core 3.0 以降のバージョン上に存在します。 ASP.NET Core Web アプリケーションは、Program.cs 内、または Startup.cs
クラス内のメソッドのペアを使用して構成されます。 サンプル Program.cs ファイルを次に示します。
using BlazorApp1.Data;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddSingleton<WeatherForecastService>();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
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.MapBlazorHub();
app.MapFallbackToPage("/_Host");
app.Run();
アプリに必要なサービスは、WebApplicationBuilder
インスタンスの Services
コレクションに追加されます。 これは、さまざまな ASP.NET Core フレームワーク サービスをフレームワークの組み込み依存関係挿入コンテナー用に構成する方法です。 さまざまな builder.Services.Add*
メソッドにより、認証、Razor Pages ルーティング、MVC コントローラー ルーティング、SignalR、Blazor Server の対話など、多くの機能を有効にするサービスが追加されます。 このメソッドは Web フォームでは必要ありませんでした。これは、ASPX、ASCX、ASHX、ASMX の各ファイルの解析と処理は、web.config 構成ファイルの ASP.NET を参照することによって定義されていたためです。 ASP.NET Core での依存関係の挿入の詳細については、 オンライン ドキュメントを参照してください。
builder
によって app
がビルドされた後は、app
の残りの呼び出しによって、その HTTP パイプラインが構成されます。 これらの呼び出しを使用して、アプリケーションに送信されたすべての要求を処理するミドルウェアを完全に宣言します。 既定の構成では、これらの機能のほとんどが Web フォーム構成ファイルに分散されており、今では参照しやすいように 1 か所にまとめられています。
カスタム エラー ページの構成は web.config
ファイルに配置されなくなりましたが、アプリケーション環境に Development
ラベルが付いていない場合に常に表示されるように構成されています。 さらに ASP.NET Core アプリケーションは、既定で UseHttpsRedirection
メソッド呼び出しによって、TLS によるセキュリティで保護されたページを提供するように構成されています。
次に、予期しない構成メソッドが UseStaticFiles
に対して呼び出されます。 ASP.NET Core では、静的ファイル (JavaScript、CSS、イメージ ファイルなど) に対する要求のサポートを明示的に有効にする必要があり、アプリの wwwroot フォルダー内のファイルのみが既定でパブリック アドレスを指定できます。
次の行は、Web フォームからの構成オプションの 1 つをレプリケートする最初の行 UseRouting
です。 このメソッドによって、パイプラインに ASP.NET Core ルーターが追加されます。これは、ここで構成することも、ルーティング先として検討できる個々のファイルで構成することもできます。 ルーティング構成の詳細については、ルーティングのセクションを参照してください。
このセクションの最後の app.Map*
呼び出しによって、ASP.NET Core がリッスンするエンドポイントが定義されます。 これらのルートは Web アクセス可能な場所であり、ユーザーは Web サーバー上でアクセスし、.NET によって処理されてユーザーに返される一部のコンテンツを受信します。 最初のエントリ MapBlazorHub
は、Blazor コンポーネントの状態とレンダリングが処理されるサーバーへのリアルタイムおよび永続的な接続を提供するために使用する SignalR ハブを構成します。 MapFallbackToPage
メソッド呼び出しは、Blazor アプリケーションを開始し、クライアント側からのディープリンク設定要求を処理するようにアプリケーションを構成する、ページの Web アクセス可能な場所を示します。 この機能の動作は、ブラウザーを開き、既定のプロジェクト テンプレート内の /counter
などのアプリケーション内の Blazor で処理されたルートに直接移動した場合に確認できます。 要求は _Host.cshtml フォールバック ページによって処理され、その後 Blazor ルーターが実行されてカウンター ページがレンダリングされます。
実行中の IIS への依存が理由で、Web フォームでは必要とされていなかったアプリケーションが、最後の行によって起動されます。
BundleConfig プロセスのアップグレード
CSS スタイルシートや JavaScript ファイルなどのアセットをバンドルするテクノロジは大幅に変化しており、これらのリソースを管理するためのツールや手法も他のテクノロジによって急速に進化しています。 このため、Grunt/Gulp/WebPack などの Node コマンドライン ツールを使用して、静的なアセットをパッケージ化することをお勧めします。
Grunt、Gulp、および WebPack のコマンドライン ツールとそれらに関連する構成をアプリケーションに追加でき、ASP.NET Core は、アプリケーションのビルド プロセス中にこれらのファイルを自動的に無視します。 gulp スクリプトとそのスクリプト内の min
ターゲットがトリガーされる次のような構文で、プロジェクト ファイル内に Target
を追加することによって、これらのタスクを実行する呼び出しを追加できます。
<Target Name="MyPreCompileTarget" BeforeTargets="Build">
<Exec Command="gulp min" />
</Target>
CSS ファイルと JavaScript ファイルを管理するための両方の方法の詳細については、「ASP.NET Core での静的資産のバンドルと縮小」のドキュメントを参照してください。
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示