No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Creando un nuevo middleware

12/22
Recursos

Aportes 14

Preguntas 13

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

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.

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”

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;

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

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

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.

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

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);
    }

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();

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.

este curso esta excelente !!!

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();

Excelente profesor

Excelente Clase @Miguel Teherán, espero muchos cursos de tu parte.