En esta sección encontrarás múltiples tutoriales para responder a diferentes preguntas que me han surgido o situaciones que me encuentro frecuentemente. Es decir, esta página pretende ser un repositorio de conocimiento para mis dudas personales, por ello muchas veces encontraréis citadas las referencias de mis respuestas, siempre que lo haya extraído de otra fuente(s). De esta manera pretendo «tener a mano» soluciones a problemas y preguntas que suelo hacerme durante la creación de proyectos.
Los tutoriales son en .NET 6, pero la plantilla utilizada (MVC, WebAPI o Razor) puede variar, por lo que procuraré indicar en qué plantilla estarán escritos los ejemplos, a menos de que sea aplicable de forma global.
A continuación el listado de temas que iré cubriendo. A medida que vaya añadiendo el contenido, actualizaré la lista para añadir un enlace al artículo en cuestión.
Seguridad
- ¿Cómo proteger las contraseñas de los usuarios mediante hash y salt?
- ¿Cómo añadir autenticación y almacenarla en Cookies con .NET 6 MVC?
- ¿Qué debo elegir, Cookies con SameSite Strict o SameSite Lax?
- ¿Cómo crear un sistema de autenticación por API Keys?
- ¿Cómo desactivar cookies según las preferencias del usuario?
- ¿Cómo añadir autorización con JWT en .NET 6 WebAPI + Swagger o PostMan?
- ¿Cómo bloquear rutas según roles y perfiles del usuario en .NET 6 WebAPI?
- ¿Cómo proteger las Secret keys y otros datos sensibles a nivel local y de servidor?
- ¿Cómo incluir un Captcha de Google para el inicio de sesión?
- ¿Cómo limitar el número de peticiones realizadas a un endpoint?
- ¿Cómo evitar una inyección SQL en los formularios?
- ¿Cómo evitar reenviar el formulario al hacer un POST con Ajax?
- ¿Cómo enviar el AntiforgeryToken en una petición Ajax con .NET 6 MVC?
Documentación
- ¿Cómo añadir un archivo Leeme.md usando Markdown en Visual Studio?
Arquitectura
- ¿Cómo crear una solución con múltiples proyectos y subirlos a github?
- ¿Cómo funcionan las referencias entre proyectos?
- ¿Cómo «inyectar» servicios desde una librería de clases a un proyecto MVC o WebAPI?
- ¿Cómo añadir un middleware al pipeline de un proyecto MVC o WebAPI?
- ¿Cómo crear una arquitectura por capas?
- ¿Cómo implementar una arquitectura de plugins (Microkernel)?
Acceso a datos (Capa Infraestructura)
- ¿Cómo implementar el patrón repositorio para acceder a los datos con ADO.NET?
- ¿Cómo implementar el patrón repositorio para acceder a los datos con Entity Framework?
- ¿Cómo tener múltiples bases de datos para un mismo proyecto WebAPI o MVC con Entity Framework?
- ¿Cómo insertar datos por defecto usando la función OnModelCreating de Entity Framework?
Servicios (Capa Aplicación)
- ¿Cómo mappear los datos de un DTO a un entidad y viceversa usando LINQ?
Utilidades clases POCO (C# puro)
- ¿Cómo devolver diferentes tipos en un mismo método C#?
- ¿Cómo convertir un string en un enum y viceversa?
- ¿Cómo obtener el valor del Data Annotation [Description]?
- ¿Cómo crear un Data Annotation para una validación personalizada?
- ¿Cómo crear clases con propiedades que tengan valores por defecto sobreescribibles?
- ¿Cómo obtener todos los descendientes de un tipo para una clase LINQ?
- ¿Cómo crear una clase para realizar tareas programadas y repetibles?
- Lista de extension methods que pueden serte de utilidad
Código limpio (sugerencias)
- ¿Cómo utilizar la deconstrucción de Tuplas para simplificar el código?
- ¿Cómo utilizar el Pattern Matching para simplificar el código?
Utilidades en MVC, WebAPI o Razor
- ¿Cómo acceder al HttpContext, Request y Response dentro del constructor de un Controller?
- ¿Cómo validar una propiedad enum con Model Binding?
- ¿Cómo serializar y deserializar JSON en objetos utilizando Newtonsoft.Json vs System.Text.Json?
- ¿Cómo deserializar JSON en objetos complejos de clases abstractas con diferentes clases hijas?
- ¿Cómo versionar un Controller y un BaseController?
- ¿Cómo implementar Feature Flags simples usando appsettings.json?
- ¿Cómo utilizar la librería FeatureManagement para expandir las funciones de las Feature Flags?
- ¿Cómo medir el rendimiento de una web utilizando OpenTelemetry?
Generación de reportes RDLC/SSRS
- ¿Cuáles son librerías y extensiones necesarias para crear un informe RDLC?
- Consideraciones a tener en cuenta al crear un informe RDLC
- ¿Cómo cargar datos de una base de datos a un informe RDLC?
- ¿Cómo insertar parámetros a un informe RDLC?
- ¿Cuáles son los formatos soportados para exportar el RDLC?
- ¿Cómo y qué elementos HTML se pueden insertar en un TextBox?
- ¿Cómo crear tablas (Tablix) con filas de colores alternos?
- ¿Cómo cambiar el color de fondo o texto de un campo de una tabla según su contenido?
- ¿Cómo crear una tabla (Tablix) dentro de otra tabla (Tablix)?
Frontend e integración con frameworks Javascript
- ¿Cómo añadir Typescript a un proyecto .NET 6?
- ¿Cómo añadir un proyecto ReactJS como frontend para una WebAPI en .NET 6?
- ¿Cómo integrar TailwindCSS en un proyecto MVC?
- ¿Cómo añadir un editor de texto TinyMCE a un proyecto MVC o Razor?
- ¿Cómo crear un componente para mostrar notificaciones en un proyecto MVC?
APIS externas
- ¿Cómo integrar Twilio en un proyecto NET 6 para enviar emails?
Análisis, seguimiento y SEO
- ¿Cómo activar Google Search Console para una web .NET 6?
- ¿Cómo crear un Middleware que genere dinámicamente un archivo robots.txt?
- ¿Cómo crear un Middleware que genere dinámicamente un archivo sitemaps.xml?
- ¿Cómo crear y enviar una Newsletter programada en .NET 6?
- ¿Cómo crear un Middleware que redirija a una pantalla 404 si no existe el contenido?