ASP.NET CoreにおけるUseIISIntegrationとは?Kestrelとの関係を解説
WebHostとWebHostBuilderの基本
すべてのASP.NET Coreアプリケーションには、アプリケーションとWebサーバーの中核となる「WebHost」オブジェクトが必要です。このWebHostは、WebHostBuilderを使って構成・生成されます。通常、セットアップコードにはUseKestrel()とUseIISIntegration()という2つのメソッドが登場します。
それぞれのメソッドの役割
UseKestrel()
UseKestrel()は、Kestrelをアプリケーションをホストするサーバーとして登録するためのメソッドです。内部的には、IServerインターフェースに対してKestrelの実装を指定しています。
将来的には、Windows専用のWebListenerをはじめ、他のサーバーオプションも選択できるようになる可能性があります。
UseIISIntegration()
UseIISIntegration()は、IISがKestrelの前段でリバースプロキシとして動作することをASP.NET Coreに伝えるためのメソッドです。
これにより、Kestrelがリスンすべきポート番号、転送ヘッダー(Forwarded Headers)の扱いなど、IISとの連携に必要な各種設定が自動的に行われます。
コード例
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
IISでのアウトオブプロセスホスティング(ASP.NET Core 2.2まで)
ASP.NET Core 2.2までの時代、ASP.NET CoreアプリケーションはIIS上で「アウトオブプロセス(プロセス外)」方式でホストされていました。つまり、1つのアプリケーションに対して次の2つのプロセスが存在していました。
- w3wp.exe: IIS側のワーカープロセス
- dotnet.exe: ASP.NET Core側のプロセス。ここでKestrel Webサーバーが起動されます。
この構成では、IISとKestrelが別々のプロセス間で通信を行うことになります。このようにIISをリバースプロキシとして利用するシナリオにおいて、UseIISIntegration()が重要な役割を果たします。
-
ASP.NET MVC C#におけるNonAction属性(NonActionAttribute)の重要性とは?
NonAction 属性は、コントローラー内にパブリックメソッドを定義したいものの、それをアクションメソッドとして扱いたくない場合に使用します。アクションメソッドとは、URLを使って呼び出すことができるコントローラー内のパブリックメソッドのことです。そのため、デフォルトではコントローラー内に定義されたすべてのパブリックメソッドは、URLリクエスト経由で呼び出し可能な状態になっています。コントローラー内のパブリックメソッドへのアクセスを制限したい場合は、NonAction属性を利用することで実現できます。ここで、MyMethod1 と MyMethod2 という2つのパブリックメソッドを持つ H
-
C# ASP.NET Web APIのフィルターの種類と使い方を徹底解説
ASP.NET Web APIフレームワークでは、リクエスト処理のさまざまな段階に追加のロジックを組み込むために「フィルター」が使用されます。フィルターは、ロギング、認可、キャッシュといった横断的関心事(クロスカッティングコンサーン)を実装するための仕組みであり、アクションメソッドやコントローラーに対して、宣言的またはプログラム的に適用できます。ここでは、C#のWeb APIで利用できる主なフィルターの種類について詳しく見ていきましょう。Web APIの主なフィルターの種類1. 認証フィルター(Authentication Filter)認証フィルターは、ユーザーの身元情報を検証するために使用