Estructura del Proyecto
SunuerManage
├─ appsettings.json # Archivo de configuración de la aplicación, incluye cadenas de conexión a DB y ajustes generales
├─ bin # Directorio con los binarios compilados
│ ├─ Debug # Salida de compilación en modo debug
│ └─ Release # Salida de compilación en modo release
├─ Code # Código de la lógica de negocio y capa de acceso a datos
│ ├─ Admin # Lógica relacionada con administradores
│ │ ├─ AdminDal.cs # Capa de acceso a datos para administradores
│ │ ├─ AdminModel.cs # Modelo de datos para administrador
│ │ ├─ AdminPowerDal.cs # Capa de acceso a datos para permisos de administrador
│ │ ├─ AdminPowerModel.cs # Modelo de datos de permisos de administrador
│ │ ├─ AdminRolesDal.cs # Capa de acceso a datos para roles de administrador
│ │ └─ AdminRolesModel.cs # Modelo de datos de roles de administrador
│ ├─ Articles # Lógica relacionada con artículos
│ │ ├─ ArticleCategoryDal.cs # Capa de acceso a datos para categorías de artículos
│ │ ├─ ArticleCategoryModel.cs # Modelo de datos para categorías de artículos
│ │ ├─ ArticlesDal.cs # Capa de acceso a datos para artículos
│ │ └─ ArticlesModel.cs # Modelo de datos para artículos
│ └─ ManageSet # Lógica relacionada con la configuración de administración
│ └─ ManageSetModel.cs # Modelo de datos de configuración de administración
├─ Controllers # Controladores (API), manejan solicitudes HTTP
│ ├─ Admin # Controladores relacionados con administradores
│ │ ├─ AdminController.cs # Controlador de administrador
│ │ ├─ AdminPowerController.cs # Controlador de permisos de administrador
│ │ └─ AdminRolesController.cs # Controlador de roles de administrador
│ ├─ Articless # Controladores relacionados con artículos
│ │ ├─ ArticleCategoryController.cs # Controlador de categorías de artículos
│ │ └─ ArticlesController.cs # Controlador de artículos
│ ├─ Files # Controladores relacionados con archivos
│ │ ├─ CaptchaController.cs # Controlador de CAPTCHA
│ │ ├─ FilesController.cs # Controlador de carga de archivos
│ │ └─ QRCodeController.cs # Controlador para generación de códigos QR
│ └─ ManageSets # Controladores para configuración de administración
│ └─ ManageSetController.cs # Controlador de configuración de administración
├─ Data # Capa de acceso a datos y contexto de base de datos
│ ├─ ApplicationDbContext.cs # Contexto de base de datos para interactuar con la DB
│ └─ SunuerManage.sql # Script de la base de datos para backup/restore
├─ Pages # Páginas Razor, para la interfaz
│ ├─ About.cshtml # Página "Acerca de"
│ ├─ Cases.cshtml # Página de casos
│ ├─ Contact.cshtml # Página de contacto
│ ├─ Error.cshtml # Página de errores
│ ├─ Index.cshtml # Página de inicio
│ ├─ News.cshtml # Página de noticias
│ ├─ newsview.cshtml # Página de detalle de noticias
│ ├─ Manage # Páginas del panel de administración
│ │ ├─ Admins # Páginas para gestionar administradores
│ │ │ ├─ AdminAdd.cshtml # Página para agregar administrador
│ │ │ ├─ AdminEdt.cshtml # Página para editar administrador
│ │ │ ├─ AdminList.cshtml # Listado de administradores
│ │ │ ├─ AdminPassWord.cshtml # Página para cambiar contraseña de administrador
│ │ │ ├─ AdminPowerAdd.cshtml # Página para agregar permisos a un administrador
│ │ │ ├─ AdminPowerEdt.cshtml # Página para editar permisos del administrador
│ │ │ ├─ AdminPowerList.cshtml # Listado de permisos de administrador
│ │ │ ├─ AdminRolesAdd.cshtml # Página para agregar roles de administrador
│ │ │ ├─ AdminRolesEdt.cshtml # Página para editar roles de administrador
│ │ │ ├─ AdminRolesList.cshtml # Listado de roles de administrador
│ │ │ ├─ Adminview.cshtml # Página de detalle de administrador
│ │ ├─ admin_index.cshtml # Página principal del panel de administración
│ │ ├─ Agreement.cshtml # Página de acuerdo de usuario
│ │ ├─ Articless # Páginas para gestión de artículos
│ │ │ ├─ ArticleCategoryAdd.cshtml # Página para crear categoría de artículos
│ │ │ ├─ ArticleCategoryEdt.cshtml # Página para editar categoría de artículos
│ │ │ ├─ ArticleCategoryList.cshtml # Listado de categorías de artículos
│ │ │ ├─ ArticlesAdd.cshtml # Página para agregar artículo
│ │ │ ├─ ArticlesEdt.cshtml # Página para editar artículo
│ │ │ ├─ ArticlesList.cshtml # Listado de artículos
│ │ ├─ consoles # Páginas de la consola
│ │ │ ├─ console.cshtml # Página de consola
│ │ ├─ Login.cshtml # Página de inicio de sesión
│ │ ├─ LoginOut.cshtml # Página de cierre de sesión
│ │ └─ ManageSets # Páginas para configuración de administración
│ │ ├─ ManageSetEdt.cshtml # Página para editar configuración de administración
│ ├─ Shared # Vistas y layouts compartidos
│ │ ├─ Menu.cshtml # Vista de menú
│ │ ├─ _indexLayout.cshtml # Layout para la página de inicio
│ │ ├─ _Layout.cshtml # Layout predeterminado
│ │ ├─ _ManageIndexLayout.cshtml # Layout para el panel de administración
│ │ └─ _ValidationScriptsPartial.cshtml # Vista parcial para scripts de validación
│ ├─ _ViewImports.cshtml # Archivo de importación de vistas, para namespaces
│ └─ _ViewStart.cshtml # Archivo de inicio de vistas, define el layout a usar
├─ Tools # Clases de utilidad
│ ├─ ApiResponse.cs # Clase de ayuda para respuestas de API - Formato de retorno unificado
│ ├─ CBC.cs # Clases para cifrado/descifrado
│ ├─ ConfigurationHelper.cs # Obtener valores de appsettings.json
│ ├─ DataTableToList.cs # Conversión de DataTable a lista
│ ├─ DBHelper.cs # Clase helper para base de datos
│ ├─ JsEncryptHelper.cs # Helper para cifrado JS
│ └─ Tools.cs # Clase de utilidades generales
├─ wwwroot # Recursos estáticos
│ ├─ css # Archivos CSS
│ ├─ favicon.ico # Ícono del sitio
│ ├─ images # Recursos de imagen
│ ├─ js # Archivos JavaScript
│ └─ Uploadfile # Carpeta de subida de archivos
├─ Program.cs # Archivo de entrada de la aplicación
├─ Properties # Archivos de propiedades del proyecto
│ ├─ launchSettings.json # Configuración de lanzamiento
│ └─ PublishProfiles # Configuraciones de publicación
│ ├─ FolderProfile.pubxml # Configuración de publicación en carpeta
│ └─ FolderProfile.pubxml.user # Configuración específica de usuario para publicación en carpeta
├─ Sunuer Manage Disclaimer (Read Carefully).txt # Archivo de descargo de responsabilidad del proyecto├─ SunuerManage.csproj # Archivo de proyecto, define configuración y dependencias
├─ SunuerManage.csproj.user # Configuración específica de usuario
├─ SunuerManage.sln # Archivo de solución, define la estructura y configuración del proyecto
Archivo de configuración launchSettings.json
{ "$schema": "http://json.schemastore.org/launchsettings.json", "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:32430", //http://localhost:32430,Indica que la aplicación se accederá a través de esta dirección.。 "sslPort": 0 } }, "profiles": { "http": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "http://localhost:5021", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" //Development: Entorno de desarrollo.Staging: Entorno de preproducción.Production: Entorno de producción。 } }, "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } }
Archivo de configuración 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: Especifica el servidor y nombre de instancia de la base de datos a la que se conectará.
Database=SunuerManage: Especifica la base de datos predeterminada a la que se conectará.
User Id=sa; Password=123456: Credenciales (usuario y contraseña) necesarias para iniciar sesión en SQL Server.
MultipleActiveResultSets=true: Permite realizar múltiples operaciones de lectura de datos en la misma conexión de base de datos (misma sesión) de manera simultánea. Por ejemplo, mientras un query está leyendo datos, otro query puede ejecutarse al mismo tiempo. En el caso de usar Entity Framework, este parámetro debe estar en true para habilitar lecturas simultáneas y otras operaciones en la misma conexión.
TrustServerCertificate=True: Al usar una conexión TLS/SSL con SQL Server, indica si se confía en el certificado proporcionado por el servidor. Con True, aunque el certificado no esté firmado por una entidad de certificación de confianza o tenga algún otro problema de validación, se fuerza la confianza y se establece la conexión cifrada. Nota de seguridad: En entornos de producción, si se usan certificados autofirmados o no confiables públicamente, esta opción permite continuar la conexión pero conlleva un riesgo de seguridad; configúrelo cuidadosamente según sus necesidades.
Max Pool Size=100; Min Pool Size=5; Pooling=true: Controla el comportamiento de la conexión de base de datos (Connection Pool).
Pooling=true: Activa el uso de la conexión en pool, mejorando el rendimiento en escenarios de acceso frecuente y evitando la apertura/cierre recurrente de conexiones.
Max Pool Size=100: Número máximo de conexiones inactivas que se mantendrán en el pool. Si este número se supera, nuevas solicitudes de conexión tendrán que esperar a que se libere alguna conexión o lanzar una excepción, según la configuración.
Min Pool Size=5: Número mínimo de conexiones inactivas que se mantendrán en el pool. La primera vez que la aplicación se conecta a la base de datos, se inicializan y conservan 5 conexiones para responder rápidamente a futuras solicitudes.