プロジェクト構成
SunuerManage
├─ appsettings.json # アプリの設定ファイル。DB接続文字列やアプリ設定などを含む
├─ bin # コンパイル済みバイナリのディレクトリ
│ ├─ Debug # デバッグモードのビルド出力
│ └─ Release # リリースモードのビルド出力
├─ Code # ビジネスロジックとデータアクセス層のコード
│ ├─ Admin # 管理者関連のビジネスロジック
│ │ ├─ AdminDal.cs # 管理者向けのデータアクセス層
│ │ ├─ AdminModel.cs # 管理者データモデル
│ │ ├─ AdminPowerDal.cs # 管理者権限のデータアクセス層
│ │ ├─ AdminPowerModel.cs # 管理者権限のデータモデル
│ │ ├─ AdminRolesDal.cs # 管理者ロールのデータアクセス層
│ │ └─ AdminRolesModel.cs # 管理者ロールのデータモデル
│ ├─ Articles # 記事関連のビジネスロジック
│ │ ├─ ArticleCategoryDal.cs # 記事カテゴリのデータアクセス層
│ │ ├─ ArticleCategoryModel.cs # 記事カテゴリのデータモデル
│ │ ├─ ArticlesDal.cs # 記事のデータアクセス層
│ │ └─ ArticlesModel.cs # 記事のデータモデル
│ └─ ManageSet # 管理設定関連のビジネスロジック
│ └─ ManageSetModel.cs # 管理設定データモデル
├─ Controllers # コントローラ(API)。HTTPリクエストを処理する
│ ├─ Admin # 管理者関連のコントローラ
│ │ ├─ AdminController.cs # 管理者コントローラ
│ │ ├─ AdminPowerController.cs # 管理者権限コントローラ
│ │ └─ AdminRolesController.cs # 管理者ロールコントローラ
│ ├─ Articless # 記事関連のコントローラ
│ │ ├─ ArticleCategoryController.cs # 記事カテゴリコントローラ
│ │ └─ ArticlesController.cs # 記事コントローラ
│ ├─ Files # ファイル関連のコントローラ
│ │ ├─ CaptchaController.cs # CAPTCHAコントローラ
│ │ ├─ FilesController.cs # ファイルアップロードコントローラ
│ │ └─ QRCodeController.cs # QRコード生成コントローラ
│ └─ ManageSets # 管理設定関連のコントローラ
│ └─ ManageSetController.cs # 管理設定コントローラ
├─ Data # データアクセス層とDBコンテキスト
│ ├─ ApplicationDbContext.cs # データベースコンテキスト(DBとのやり取りに使用)
│ └─ SunuerManage.sql # データベーススクリプトファイル(バックアップ/リストア用)
├─ Pages # Razorページ。フロントエンド表示用
│ ├─ About.cshtml # "About"ページ
│ ├─ Cases.cshtml # ケース一覧ページ
│ ├─ Contact.cshtml # お問い合わせページ
│ ├─ Error.cshtml # エラーページ
│ ├─ Index.cshtml # ホームページ
│ ├─ News.cshtml # ニュースページ
│ ├─ newsview.cshtml # ニュース詳細ページ
│ ├─ Manage # 管理画面関連ページ
│ │ ├─ Admins # 管理者管理ページ
│ │ │ ├─ AdminAdd.cshtml # 管理者追加ページ
│ │ │ ├─ AdminEdt.cshtml # 管理者編集ページ
│ │ │ ├─ AdminList.cshtml # 管理者リストページ
│ │ │ ├─ AdminPassWord.cshtml # 管理者パスワード変更ページ
│ │ │ ├─ AdminPowerAdd.cshtml # 管理者権限追加ページ
│ │ │ ├─ AdminPowerEdt.cshtml # 管理者権限編集ページ
│ │ │ ├─ AdminPowerList.cshtml # 管理者権限リストページ
│ │ │ ├─ AdminRolesAdd.cshtml # 管理者ロール追加ページ
│ │ │ ├─ AdminRolesEdt.cshtml # 管理者ロール編集ページ
│ │ │ ├─ AdminRolesList.cshtml # 管理者ロールリストページ
│ │ │ ├─ Adminview.cshtml # 管理者詳細ページ
│ │ ├─ admin_index.cshtml # 管理画面のトップページ
│ │ ├─ Agreement.cshtml # ユーザー利用規約ページ
│ │ ├─ Articless # 記事管理ページ
│ │ │ ├─ ArticleCategoryAdd.cshtml # 記事カテゴリ追加ページ
│ │ │ ├─ ArticleCategoryEdt.cshtml # 記事カテゴリ編集ページ
│ │ │ ├─ ArticleCategoryList.cshtml # 記事カテゴリリストページ
│ │ │ ├─ ArticlesAdd.cshtml # 記事追加ページ
│ │ │ ├─ ArticlesEdt.cshtml # 記事編集ページ
│ │ │ ├─ ArticlesList.cshtml # 記事リストページ
│ │ ├─ consoles # コンソールページ
│ │ │ ├─ console.cshtml # コンソールページ
│ │ ├─ Login.cshtml # ログインページ
│ │ ├─ LoginOut.cshtml # ログアウトページ
│ │ └─ ManageSets # 管理設定ページ
│ │ ├─ ManageSetEdt.cshtml # 管理設定編集ページ
│ ├─ Shared # 共有ビューとレイアウト
│ │ ├─ Menu.cshtml # メニュービュー
│ │ ├─ _indexLayout.cshtml # ホームページのレイアウト
│ │ ├─ _Layout.cshtml # デフォルトレイアウト
│ │ ├─ _ManageIndexLayout.cshtml # 管理画面向けレイアウト
│ │ └─ _ValidationScriptsPartial.cshtml # バリデーションスクリプト用部分ビュー
│ ├─ _ViewImports.cshtml # ビューインポートファイル(名前空間などを定義)
│ └─ _ViewStart.cshtml # ビュースタートファイル、レイアウトを設定
├─ Tools # ツールクラス
│ ├─ ApiResponse.cs # API応答のユーティリティクラス - 統一形式
│ ├─ CBC.cs # 暗号化/復号化のユーティリティクラス
│ ├─ ConfigurationHelper.cs # appsettings.jsonの値を取得するヘルパークラス
│ ├─ DataTableToList.cs # DataTableからリストへ変換
│ ├─ DBHelper.cs # データベースヘルパークラス
│ ├─ JsEncryptHelper.cs # JS暗号化用のヘルパークラス
│ └─ Tools.cs # 汎用ツールクラス
├─ wwwroot # 静的リソース
│ ├─ css # CSSファイル
│ ├─ favicon.ico # サイトアイコン
│ ├─ images # 画像リソース
│ ├─ js # JavaScriptファイル
│ └─ Uploadfile # アップロードされたファイル格納用
├─ Program.cs # アプリのエントリポイント
├─ Properties # プロジェクトのプロパティ関連
│ ├─ launchSettings.json # 起動設定ファイル
│ └─ PublishProfiles # パブリッシュ設定ファイル
│ ├─ FolderProfile.pubxml # フォルダへの配置設定
│ └─ FolderProfile.pubxml.user # ユーザー固有のフォルダ配置設定
├─ Sunuer Manage Disclaimer (Read Carefully).txt # プロジェクトの免責事項ファイル├─ SunuerManage.csproj # プロジェクトファイル。設定や依存関係などを定義
├─ SunuerManage.csproj.user # ユーザー固有の設定ファイル
├─ SunuerManage.sln # ソリューションファイル。プロジェクトの構成を定義
設定ファイル launchSettings.json
{ "$schema": "http://json.schemastore.org/launchsettings.json", "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:32430", //http://localhost:32430,このアドレスを通じてアプリケーションにアクセスすることを示します。 "sslPort": 0 } }, "profiles": { "http": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "http://localhost:5021", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" //Development:開発環境. Staging:ステージング環境(プレリリース環境). Production:本番環境 } }, "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } }
設定ファイル appsettings.json
"ConnectionStrings": {
"DefaultConnection": "Server=nhdSQLEXPRESS;Database=SunuerManage;User Id=sa;Password=123456;MultipleActiveResultSets=true;TrustServerCertificate=True;Max Pool Size=100;Min Pool Size=5;Pooling=true;"
},
Server=nhd/SQLEXPRESS: 接続先のデータベースサーバーおよびインスタンス名を指定。
Database=SunuerManage: 接続先の既定データベース名を指定。
User Id=sa; Password=123456: SQL Serverにログインするための資格情報(ユーザー名とパスワード)。
MultipleActiveResultSets=true: 同一のデータベース接続(セッション)で複数のデータ読み取り操作を同時に行えるようにします。例えば、一方のクエリがデータを読み込み中に、別のクエリを同時に実行できます。特にEntity Framework利用時、一つの接続でデータを繰り返し読み込みながら他の操作をする場合、このパラメータを true にする必要があります。
TrustServerCertificate=True: TLS/SSLを使用してSQL Serverへ暗号化接続を行う際、サーバーが提供する証明書を信頼するかどうかを指定。Trueに設定すると、証明書が信頼できる認証局によって署名されていない場合や、他の検証問題がある場合でも、強制的に信頼して暗号化接続を確立します。セキュリティ上の注意:本番環境で自己署名証明書または非公的な証明書を使う場合、このオプションは接続を可能にしますがセキュリティリスクが伴います。要件に応じて慎重に設定してください。
Max Pool Size=100; Min Pool Size=5; Pooling=true: データベース接続プール(Connection Pool)の動作を制御します。
Pooling=true: 接続プールを有効化し、アプリケーションが頻繁にデータベースにアクセスする際にパフォーマンスを向上させ、接続のオープン/クローズ処理を繰り返すコストを削減します。
Max Pool Size=100: プールに保持できるアイドル接続の最大数。この数を超えると、新規接続要求はプール内の接続が解放されるまで待機するか、設定によっては例外をスローします。
Min Pool Size=5: プールに保持されるアイドル接続の最小数。アプリケーションがデータベースに初めて接続する際、あらかじめ5つの接続を作成して待機させ、後続の要求に素早く対応します。