專案結構
SunuerManage
├─ appsettings.json # 應用程式的設定檔,包含資料庫連線字串、應用程式設定等
├─ 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 # 驗證碼控制器
│ │ ├─ FilesController.cs # 檔案上傳控制器
│ │ └─ QRCodeController.cs # 二維碼生成控制器
│ └─ ManageSets # 管理設定相關控制器
│ └─ ManageSetController.cs # 管理設定控制器
├─ Data # 資料存取層與資料庫內容
│ ├─ ApplicationDbContext.cs # 資料庫上下文,用來與資料庫互動
│ └─ SunuerManage.sql # 資料庫腳本檔案,備份/還原
├─ Pages # Razor 頁面,用於前端顯示
│ ├─ About.cshtml # 關於我們頁面
│ ├─ 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回應工具類 - 統一的API回傳格式
│ ├─ CBC.cs # 加解密工具類
│ ├─ ConfigurationHelper.cs # 取得 appsettings.json 裡的設定值
│ ├─ DataTableToList.cs # 資料表轉列表的工具類
│ ├─ 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 免責聲明(必讀).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,即使該憑證並非由受信任的 CA 簽署或存在其他驗證問題,仍強制信任並建立加密連線。安全提示:在正式環境中若使用自簽名憑證或非公開信任憑證,雖然此選項可讓連線繼續,但也帶來一定的安全風險,應依實際需求進行設定與配置。
Max Pool Size=100; Min Pool Size=5; Pooling=true:控制資料庫連線池(Connection Pool)的行為。
Pooling=true:啟用連線池,能在應用程式頻繁存取資料庫時提升效能,減少開啟/關閉連線的開銷。
Max Pool Size=100:連線池中最多保留多少條空閒連線。若超過該數,新的連線請求會在連線釋放前等待或根據配置拋出例外。
Min Pool Size=5:連線池中最少保留多少條空閒連線。在應用程式首次連線資料庫時,會預熱並保留 5 條連線,以便後續連線請求能更快速地響應。