ASP.NET Core on Webサーバー(kestrel)
- ASP.NET Coreで作成したアプリケーションを用意して、
- 上記をWebサーバー上で起動させます。
調べてみた
- 最初思いついたのは、Azure。しかし、これは登録とかが面倒だし、やりたいことの手前で力尽きそうなので却下しました。
- 次に、IIS。これでしょう!と思い、作業開始
- しかし、結果から言うと、(テンプレートで作った)ASP.NET Coreアプリケーションを起動すると、デフォルトでKestral(ケストラル)というWebサーバー機能が内包され、別途Webサーバーと起動する必要がなかった。
やりかた
1). VSCodeを起動
2). Terminalにて、プロジェクト作成ディレクトリへ移動
cd d:\study\dotnet
3). 続けて、以下のコマンドを実行。テンプレートプロジェクトが生成されます。
dotnet new mvc
4). VSCodeで生成したプロジェクトフォルダを開きます。
[File] > [Open Folder...]
5). Terminalから以下のコードを実行。セキュリティの話。
dotnet dev-certs https --trust
6). デバッグなしで開始する
[Debug] > [Run without Debugging]
別デバイスからのアクセス
- 上記の手順だけでは、スマホなど別デバイスからアクセスできず、開発環境PCからしかWebページを表示できません。
- そこで、以下の手順を実行します。*2
- こうすることで、別デバイスからでもWebページを表示できるようになります。(Developmentモード時の設定です)
1). appsettings.Development.json を開く
2). "urls": "http://:5000;https://:5001", を追加します。
{ "urls": "http://*:5000;https://*:5001", "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } } }
Kestralについて
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
- ConfigureWebHostDefaults()コールによって、Kestralが起動するようになっている。
- ネット上のコードを見ると、わざわざUseKestral()をコールする処理が記述されていたりして紛らわしい。
- 初心者は、まずはテンプレートを使えばいいかな。