CursosEmpresasBlogLiveConfPrecios

Creando un nuevo middleware

Clase 12 de 22 • Curso de APIs con .NET

Clase anteriorSiguiente clase

Contenido del curso

Introducción a API en .NET

  • 1
    Domina las API con .NET

    Domina las API con .NET

    02:50 min
  • 2
    Prerrequisitos

    Prerrequisitos

    02:36 min
  • 3
    ¿Qué es una API?

    ¿Qué es una API?

    04:22 min
  • 4
    ¿Qué es REST?

    ¿Qué es REST?

    08:18 min
  • 5
    Creando tu primera API con .NET

    Creando tu primera API con .NET

    04:04 min

Funcionamiento de una API en .NET

  • 6
    Consumiendo API desde Postman

    Consumiendo API desde Postman

    05:33 min
  • 7
    Análisis del template para APIs de .NET

    Análisis del template para APIs de .NET

    10:51 min
  • 8
    Atributos para verbos HTTP

    Atributos para verbos HTTP

    14:56 min
  • 9
    Manejo de rutas

    Manejo de rutas

    09:51 min
  • 10
    Minimal API vs. Web API

    Minimal API vs. Web API

    08:36 min

Arquitectura y configuración

  • 11
    ¿Qué son los middlewares?

    ¿Qué son los middlewares?

    08:54 min
  • 12
    Creando un nuevo middleware

    Creando un nuevo middleware

    Viendo ahora
  • 13
    Inyección de dependencias

    Inyección de dependencias

    16:43 min
  • 14
    Agregando Logging a API

    Agregando Logging a API

    09:25 min
  • 15
    Documentando API con Swagger

    Documentando API con Swagger

    08:03 min

Manipulación de datos con Entity Framework

  • 16
    Agregando librerías para Entity Framework

    Agregando librerías para Entity Framework

    04:38 min
  • 17
    Configuración de Entity framework y clases base

    Configuración de Entity framework y clases base

    08:31 min
  • 18
    Creación de servicios

    Creación de servicios

    12:24 min
  • 19
    Inyectando servicios como dependencia

    Inyectando servicios como dependencia

    04:43 min
  • 20
    Creando controladores

    Creando controladores

    11:32 min
  • 21
    Probando API con una base de datos SQL server

    Probando API con una base de datos SQL server

    14:03 min

Outro

  • 22
    Retrospectiva: APIs con .NET

    Retrospectiva: APIs con .NET

    03:05 min
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads
        Josian Francisco Cáceres Suazo

        Josian Francisco Cáceres Suazo

        student•
        hace 4 años

        Este comentario solo es para reconocer lo buena que estuvo esta clase y el buen docente que eres @Miguel Teheran, espero de verdad seguir viendo más cursos de tu parte.

          Alonso Cordova

          Alonso Cordova

          student•
          hace 4 años

          Espero lo mismo, me gusta mucho como enseña.

          Sabrina Sandí Quirós

          Sabrina Sandí Quirós

          student•
          hace 4 años

          Yo estoy desde cero y me siento muy motivada porque el tema es muy interesante y estoy logrando comprender muchas cosas!!

        Luis Angel Cruz Ruiz

        Luis Angel Cruz Ruiz

        student•
        hace 3 años

        Se lanzó una excepción cuando cambié de orden la ejecución del siguiente middleware. Lo solucioné colocando un simple return antes de que se ejecutara el siguiente:

        public async Task Invoke (HttpContext context) { if(context.Request.Query.Any( p=> p.Key == "time")) { await context.Response.WriteAsync(DateTime.Now.ToShortTimeString()); return; } await next(context); }

        Si a alguien le pasa lo mismo, espero que esto les auide a solucionarlo c;

          Rodrigo Chambi Quispe

          Rodrigo Chambi Quispe

          student•
          hace 3 años

          funcionó.

          Luis Cadme

          Luis Cadme

          student•
          hace 3 años

          gracias me sirvió

        Nestor Fabian Peña Estrella

        Nestor Fabian Peña Estrella

        student•
        hace 3 años

        En el minuto 4:05 Miguel agrega todo el namespace para corregir un problema supuestamente porque se está tomando el tipo de datos equivocado, el problema era más sencillo ... habia escrito "HttpContent" en lugar del correcto que era "HttpContext"

          Erick Alejandro Benitez Tenorio

          Erick Alejandro Benitez Tenorio

          student•
          hace 3 años

          Me paso el mismo caso jeje

          Alex Eugenio Gavidia Donayre

          Alex Eugenio Gavidia Donayre

          student•
          hace 3 años

          Buena

        José Javier Vásquez Ramos

        José Javier Vásquez Ramos

        student•
        hace 4 años

        Al momento que realizo el cambio de ejecución en el método de Invoke me lanza un error, no me funciona, esperaria solo la fecha pero en mi caso no es asi.

        public async Task Invoke(Microsoft.AspNetCore.Http.HttpContext context){ await next(context); if (context.Request.Query.Any(p => p.Key == "time")) { await context.Response.WriteAsync(DateTime.Now.ToShortDateString()); } }

        GET https://localhost:7147/api/WeatherForecast?time Error: aborted Request Headers User-Agent: PostmanRuntime/7.29.0 Accept: / Postman-Token: e5c4e3fb-53cc-4a8f-bf58-9d5c2286b98e Host: localhost:7147 Accept-Encoding: gzip, deflate, br Connection: keep-alive

        Tengo exactamente el mismo codigo, si no muevo la invocacion de next(), me funciona bien, se ejecuta el middleware.

        A alguien mas le sucede?

          cromero207

          cromero207

          student•
          hace 4 años

          Estuve mirando algo en foros y resulta que ese error sucede porque el response comenzó a enviarse al usuario, por que antes de ejecutar await next.Invoke(context) hay que anteponer esto:

          if (!context.Response.HasStarted) { await next.Invoke(context); }
          Marcos Avila Rodriguez

          Marcos Avila Rodriguez

          student•
          hace 4 años

          A mi me muestra un error en la consola pero el **statuscode ** es 200 y el **response ** me lo deja en blanco. Si lo dejo como en el primer ejemplo, funciona sin problemas.

        Erick Edgardo Marroquin Escobar

        Erick Edgardo Marroquin Escobar

        student•
        hace 3 años

        Es el curso más concreto y completo que he visto, sin tanta explicación de cosas que nada que ver

          Luis Vargas

          Luis Vargas

          student•
          hace 3 años

          Totalmente de acuerdo, a veces hablan tanto de muchos temas a la vez o se distraen contando cosas que no viene al caso y lo que hacen es enredar a uno aun más de lo que ya estamos. Espero poder seguir viendo más y más cursos de Miguel.

        Platzi Team

        Platzi Team

        student•
        hace 3 años

        Creando un nuevo middleware


        public class TimeMiddleware { private readonly RequestDelegate _next; public TimeMiddleware(RequestDelegate next) { _next = next; } public async Task InvokeAsync(HttpContext context) { await _next(context); if (context.Request.Query.Any(x => x.Key == "time")) { await context.Response.WriteAsync(DateTime.Now.ToShortTimeString()); } } } public static class TimeMiddlewareExtensions { public static IApplicationBuilder UseTimeMiddleware(this IApplicationBuilder builder) { return builder.UseMiddleware<TimeMiddleware>(); } }
        • Cree una clase que implemente la interfaz IMiddleware: Debe crear una clase que implemente la interfaz IMiddleware y tenga un método llamado Invoke. Este método es el que se ejecutará cuando se invoque el middleware.
        • Agregue el código personalizado: Dentro del método Invoke, puede agregar el código que desea ejecutar cuando se invoque el middleware. Por ejemplo, puede agregar lógica para capturar errores, realizar seguimiento de solicitudes o autenticar a un usuario.
        • La línea await _next(context); en el código de un middleware se usa para continuar con la siguiente etapa en la cadena de middlewares. En otras palabras, esta línea permite que el control pase al siguiente middleware en la cadena para que pueda realizar su procesamiento.
        • El objeto HttpContext que se pasa como argumento a la función InvokeAsync contiene información sobre la solicitud HTTP actual y la respuesta que se está construyendo. El argumento _next es un delegado RequestDelegate que representa la siguiente etapa en la cadena de middlewares.
        • Añada el middleware a la cadena de solicitudes: Finalmente, debe añadir el middleware a la cadena de solicitudes en el archivo program.cs . Esto se puede hacer llamando al método UseMiddleware y proporcionando una instancia de su clase de middleware personalizado.
        app.UseTimeMiddleware();
          Diego Fernando Pallares Ramirez

          Diego Fernando Pallares Ramirez

          student•
          hace 3 años

          Como supiste sacar tremenda solución, gracias ?

          Joel Prada

          Joel Prada

          student•
          hace 2 años

          Excelente síntesis.

        Jaime Eduardo Falla Cardozo

        Jaime Eduardo Falla Cardozo

        student•
        hace 3 años

        Hay que anotar que al parecer con la versión 7 se genera una excepción implementando el código como lo tenía. Por lo que tuve que dejarlo de la siguiente forma

        public async Task Invoke(HttpContext context){ if(context.Request.Query.Any(p => p.Key == "time")){ await context.Response.WriteAsync(DateTime.Now.ToShortTimeString()); return; } await _next(context); }
          Javi Llinares

          Javi Llinares

          student•
          hace 3 años

          Hola Jaime, ¿podrías explicar porqué añadiste el return?

          He probado tu código y efectivamente funciona así, pero no entiendo bien porque has añadido ese "return".

          ¡Gracias!

          Ivan David Martinez Baron

          Ivan David Martinez Baron

          student•
          hace 3 años

          Javi, eso se debe a que si no se termina el código dentro del if, se estaría llamando dos veces al middelware.

        Emi Lemus

        Emi Lemus

        student•
        hace 3 años

        Hola, sinceramente vi tres veces esta clase y no entendi nada, se van mencionando conceptos que no tengo claros, en conclusión, no se que hizo. Alguien me puede hacer un resumen para seguir con el curso ? Gracias.

          Juan Rosario

          Juan Rosario

          student•
          hace 3 años

          Emi, si ese fue el caso, es posible que no hayas tenido claros algunos conceptos de videos anteriores.

          Aqui se hacen cosas nuevas, pero viene de una base de explicaciones anteriores.

          Te recomiendo, cortésmente, que repases las clases anteriores a este video para que te queden claras las cosas que se hicieron aqui

          Diego Andrés Castillo Ospina

          Diego Andrés Castillo Ospina

          student•
          hace 2 años

          Igualmente me sucedió, sé que los middlewares se interponen en el flujo de un request para hacerle alguna función en específico, pero al ver esa función necesita de unos objetos e interfaces que me hizo perder mucho.

        John Sergio Ramirez Castañeda

        John Sergio Ramirez Castañeda

        student•
        hace 3 años

        Middlewares (Programas intermedios) • La base de como funciona cada uno de los request. • Es una serie de instrucciones de código que se agregan al ciclo de vida de una petición HTTP. • Provee una ejecución de peticiones a través de capas. • Facilitan la implementación de interceptores y filtros sobre las peticiones en una API. • Es mucho más fácil ver la secuencia de comandos que se ejecutan por cada petición e implementar middleware personalizados (con código a demanda ) para interceptar algún request y agregar algún comportamiento adicional.

        Middleware **página de bienvenida **

        app.UseWelcomePage();
        Ronald Ernesto Tejada Ríos

        Ronald Ernesto Tejada Ríos

        student•
        hace 3 años

        Excelente clase!! Definitivamente pienso borrar este middleware porque me está generando más problemas que beneficios, pero fue genial poder entender el concepto de middleware de una forma tan sencilla

        En mis palabras diría que los middlewares son procesos que se van realizando en cadena uno después del otro desde que empieza el request, hasta que se termina el proceso y se llega al endpoint que sería donde devolvemos datos al usuario

        Nestor Fabian Peña Estrella

        Nestor Fabian Peña Estrella

        student•
        hace 3 años

        En mi caso no muestra solo la hora, a mi me muestra un error en la consola que dice:

        The response has already started, the error page middleware will not be executed.

        el response es 200 pero sin ningun valor de response

        Diego Eduardo Téllez Contreras

        Diego Eduardo Téllez Contreras

        student•
        hace 2 años

        Entiendo que el TimeMiddlewareExtension lo que hace es permitirnos usar el middleware en el archivo Program.cs, pero la verdad no entiendo por qué tiene la palabra extension? Es obligatorio que lleve esa palabra?

        Por qué esa clase no tiene un constructor? En qué momento se está ejecutando esa clase TimeMiddlewareExtension?

          Miguel Teheran

          Miguel Teheran

          teacher•
          hace 2 años

          Es por buena practica para indicar que es un extesion method, este un concepto en C# que nos permite extenderlos metodos de un tipo para este escenario era la mejor opción, para que se pudiera usar como los demas middlewares y tener la misma forma de llamarlo

          https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods

          Diego Eduardo Téllez Contreras

          Diego Eduardo Téllez Contreras

          student•
          hace 2 años

          Gracias por la aclaración profe!

        Andrea Ruíz

        Andrea Ruíz

        student•
        hace 4 años

        Que plugin usan para que les funcione bien el autocompletado de C# en VSC?

          Miguel Teheran

          Miguel Teheran

          teacher•
          hace 4 años

          La extension de C# de microsoft : https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp

          Te recomiendo pack de extensiones de .NET https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.vscode-dotnet-pack

          Pablo Cesar Lara Londoño

          Pablo Cesar Lara Londoño

          student•
          hace 2 años

          Que detallazo profe @Mteheran 👍🏻

        Erick Alexander Cabrera González

        Erick Alexander Cabrera González

        student•
        hace 2 años

        Hola, como dato adicional: Si están realizando la creación de Middlewares en Visual Studio (versión Community por ejemplo) recordar que hay que usar el Using "Namespace" del archivo TimeMiddleware en la clase Program para que funcione como en el video.

        JUAN PABLO MAYORGA MENDIETA

        JUAN PABLO MAYORGA MENDIETA

        student•
        hace 2 años

        me parece muy mal que en la nueva version omitan la fecha en la que se realizan los comentarios, esto nos da a simple vista que tanantiguo es el curso y que tan desactualizado es el contenido que estamos consumiendo. Como observación me gustaría que se mostrara esa información y que uno como usuario decida si hace o no el curso, como estaba en la versión anterior.

        Pablo Gabriel Mederos Caballero

        Pablo Gabriel Mederos Caballero

        student•
        hace 4 años

        En este video hay dos conceptos. La creación de Middlewares y también la creación de extensiones. Muy buen ejemplo en poco código.

        Camilo Garcia

        Camilo Garcia

        student•
        hace 4 años

        Cuando le coloqué el llamado a await next(context); Despues del bloque if, no me respondio el servicio, alguien sabe que puede ser ?

          Miguel Teheran

          Miguel Teheran

          teacher•
          hace 4 años

          Puedes colocar el código para hecharle un vistaso?

          Andre Huaman Yovera

          Andre Huaman Yovera

          student•
          hace 3 años
          if (!context.Response.HasStarted) { await next.Invoke(context); }``` Con esto se soluciona!
        Agustin Emilio Alcantara Corporan

        Agustin Emilio Alcantara Corporan

        student•
        hace 4 años

        Podemos envolver las respuestas en una estructura JSON general, para todas las respuestas ?

          Miguel Teheran

          Miguel Teheran

          teacher•
          hace 4 años

          Por defecto es un json cuando se usan elementos complejos como clases y colecciones no tienes que usar el Json(result)

        Francisco Javier Pineda Giraldo

        Francisco Javier Pineda Giraldo

        student•
        hace 3 años

        Como soy Nuevo en estos temas me Cuesta entender cuando utilizan metodos, y argumentos, ya propios de la API, y lo hacen escribiendo código con tanta facilidad, que me sugieren para desarrollar esa misma habilidad, Yo aún no lo asimilo tan facil

          Miguel Teheran

          Miguel Teheran

          teacher•
          hace 3 años

          Creo que al final es practicar, imaginarte unos demos o escenarios en tu cabeza e implementarlos usando los middlewares. de todas formas ya existen muchas librerías que hacen un montón de cosas esto es solo para ciertos casos o escenarios.

        Juan Sebastian Viazzo Perrone

        Juan Sebastian Viazzo Perrone

        student•
        hace 3 años

        Una consulta,

        de constumbre, y por codear en Vistual Studio, a la clase de TimeMiddleware le puse un namespace, por interpretacion mia, segun lo que entiendo de los namespaces...porque eso me tiraba error? los middleware y alguna otra clase de api no van con Using o namespaces?

          Miguel Teheran

          Miguel Teheran

          teacher•
          hace 3 años

          Si le colocas un namespace ya sea en la estructura de un archivoo como un static namespaces debes hacer referencia usando using en el archivo donde lo vayas a utilizar.