C#
 Computer >> コンピューター >  >> プログラミング >> C#

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アプリケーションが停止されるまで実行を継続します。

  1. 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

  2. ASP.NET MVC C#におけるNonAction属性(NonActionAttribute)の重要性とは?

    NonAction 属性は、コントローラー内にパブリックメソッドを定義したいものの、それをアクションメソッドとして扱いたくない場合に使用します。アクションメソッドとは、URLを使って呼び出すことができるコントローラー内のパブリックメソッドのことです。そのため、デフォルトではコントローラー内に定義されたすべてのパブリックメソッドは、URLリクエスト経由で呼び出し可能な状態になっています。コントローラー内のパブリックメソッドへのアクセスを制限したい場合は、NonAction属性を利用することで実現できます。ここで、MyMethod1 と MyMethod2 という2つのパブリックメソッドを持つ H