投稿

ラベル(.NET Core)が付いた投稿を表示しています

WEB予約システムを作りました

イメージ
仕事ではなく個人的にWEB予約システムを作ったので、今回はそれを自慢する内容です。 予約画面はこんな感じです。 PC用画面 予約の登録、確認、変更ができます。 もちろんスマートフォン用の画面もありますよ。 既に予約が上限まで埋まっている場合は予約不可となるのは当然として、祝日・非営業日・非営業時間をも考慮して予約の可否を判断します。 管理画面はこんな感じです。 月表示の他に週、日単位での表示が可能 予約の登録、変更、削除ができます。 他にも営業日、営業時間、休憩時間などを設定できます。 この予約システムの売りは双方向通信です! 双方向通信により、以下のことを実現しています。 ・クライアントが予約を行った場合、他のクライアントのブラウザへ通知が届き、予約が埋まったことを知らせる。 ・管理画面から予約を登録した場合、全クライアントのブラウザへ通知が届き、予約が埋まったことを知らせる。 技術的な概要は以下です。 ・クラウドサーバー:AWS EC2(Linux) ・フレームワーク:.NET Core 3.1 ・DB:SQLite ・WEBサーバー:Kestrel ・ライブラリ:NLog4.7、MailKit 2.6、Json.NET 12.0.3、Jquery 3.4.1、Bootstrap 4.3.1、FullCalendar 4.3.1 ・依存している外部システム:Let's Encrypt、Google Calendar Let's EncryptはTLS通信のために、Google Calendarは祝日を取得するために使用しています。

.NET Core × Let's Encrypt

.NET Core 3.1とkestrelの環境でLet's Encryptを使おうとしたら躓きました。 .NET CoreではStartup.Configure()にてHTTP要求パイプラインを構築し、そこで「静的ファイルミドルウェア」を追加することで静的ファイルへアクセス可能となります。 public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseStaticFiles(); しかし、予め.NET Coreに登録されているファイル種別(拡張子)しかアクセスを許可しないため、登録されていないファイル種別は404となります。 Let's EncryptがWebルート(wwwroot)に作成するファイルは.NET Coreには登録されていないため、404となり認証に失敗します。 これを解決するためには登録されていないファイル種別のファイルもアクセスを許可します。 public void Configure(IApplicationBuilder app, IWebHostEnvironment env) {     app.UseStaticFiles();     app.UseStaticFiles(new StaticFileOptions     {         ServeUnknownFileTypes = true,         DefaultContentType = "application/octet-stream"     }); ポイントとしては引数を渡さないUseStaticFiles()も必要なところ。 これがないと、404のままでした。

このブログの人気の投稿

ArduinoにUARTのPINを追加する

Visual StudioでAngularの開発をする

Arduinoが技適を取得した!?