C# ASP.NET CoreプロジェクトにおけるProgram.csファイルの目的とは?
Program.csファイルの役割
ASP.NET CoreのWebアプリケーションは、実際にはコンソールプロジェクトです。アプリケーションの実行は、Programクラス内のエントリポイントである public static void Main() メソッドから開始され、ここでWebアプリケーション用のホストを作成します。
public class Program{
public static void Main(string[] args){
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}WebHostとCreateDefaultBuilder()
WebHostは静的クラスであり、事前構成済みのデフォルト設定を使って IWebHost および IWebHostBuilder のインスタンスを作成するために使用されます。
CreateDefaultBuilder()メソッドは、事前構成済みのデフォルト設定を持つ新しいWebHostBuilderインスタンスを生成します。内部的には、Kestrelサーバー、IIS統合、その他の各種構成が自動的に設定されます。
CreateDefaultBuilder()が行う主な構成内容
- 「コンテンツルート(Content Root)」を現在のディレクトリに設定する
- コマンドライン引数を構成オブジェクトに渡せるようにする
- appsettings.json および appsettings.{Environment}.json を構成オブジェクトに読み込む
- 環境変数を構成オブジェクトに追加する
- 開発環境の場合、ユーザーシークレットの読み込みを許可する
- コンソールロガーおよびデバッグロガーを追加する
- アプリケーションがKestrelを使用し、読み込まれた構成からKestrelの設定を取得するよう指示する
- ルーティング機能を追加する
- IIS統合を追加する
IISでのホスティング
アプリケーションをIIS上でホストしたい場合は、UseIISIntegration()メソッドを追加する必要があります。このメソッドにより、IISが外部Webサーバー(リバースプロキシ)として指定されます。
UseStartup・Build・Runメソッドの働き
UseStartup<Startup>()メソッドは、Webホストが使用するStartupクラスを指定します。必要に応じて、独自のカスタムクラスをStartupクラスの代わりに指定することも可能です。
Build()メソッドは IWebHost のインスタンスを返し、Run()メソッドはWebアプリケーションが停止されるまで実行を継続します。
-
ASP.NET MVC C#におけるChildActionOnly属性とは?使い方をわかりやすく解説
ChildActionOnly属性とは?ASP.NET MVCにおいて、[ChildActionOnly]属性が付与されたアクションメソッド(子アクション/Child Action)は、子リクエスト(child request)からのみアクセス可能です。そのため、ブラウザからURLを直接指定してアクセスすることはできません。URL経由で直接アクセスしようとすると、実行時に次のようなエラーがスローされます。「Child action is accessible only by a child request」(子アクションは子リクエストからのみアクセスできます)子アクションメソッドは、ビュー(V
-
ASP.NET MVC C#におけるNonAction属性(NonActionAttribute)の重要性とは?
NonAction 属性は、コントローラー内にパブリックメソッドを定義したいものの、それをアクションメソッドとして扱いたくない場合に使用します。アクションメソッドとは、URLを使って呼び出すことができるコントローラー内のパブリックメソッドのことです。そのため、デフォルトではコントローラー内に定義されたすべてのパブリックメソッドは、URLリクエスト経由で呼び出し可能な状態になっています。コントローラー内のパブリックメソッドへのアクセスを制限したい場合は、NonAction属性を利用することで実現できます。ここで、MyMethod1 と MyMethod2 という2つのパブリックメソッドを持つ H